如何在bash中将此echo语句传递给我的函数?

时间:2017-12-14 15:41:48

标签: linux bash unix

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 个答案:

答案 0 :(得分:0)

根据定义,该函数从命令行获取参数$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