bitToSixtyFour () {
echo "$((2#$1))"
}
while true
do
if (( i == ${#newString} || i >= ${#newString} ))
then
break
fi
echo ${newString:i:i+6} | bitToSixtyFour
i+=6
done
所以在我的 while 循环中,我试图找出如何将 echo 语句作为参数传递到我的函数 bitToSixtyFour 中。它说找不到 bitToSixtyFour。
最佳答案
根据定义,该函数从命令行获取参数 $1
:
bitToSixtyFour arg1
从标准输入读取 read
bitToSixtyFour() {
read varname
echo $((2#$varname))
}
echo 1010 | bitToSixtyFour
使用变量来避免创建子 shell 和管道会更有效
bitToSixtyFour() {
bitToSixtyFour=$((2#$1))
}
newString=1100101010011110101110110001100110
for ((i=0;i<${#newString};i+=6)); do
substr=${newString:i:6}
bitToSixtyFour "$substr"
printf "%3s %s\n" "$bitToSixtyFour" "$substr"
done
和问题定义
bitToSixtyFour() {
echo "$((2#$1))"
}
newString=1100101010011110101110110001100110
for ((i=0;i<${#newString};i+=6)); do
substr=${newString:i:6}
res=$(bitToSixtyFour "$substr")
printf "%3s %s\n" "$res" "$substr"
done
关于linux - 我如何将这个 echo 语句传递到我的 bash 函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47817151/