linux - 我如何将这个 echo 语句传递到我的 bash 函数中?

标签 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:

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/

相关文章:

linux - 在 linux 中使用 QGLFrameBufferObject 渲染的错误颜色

Bash,如何从视觉上区分 stdout 和 stderr?

bash - 使用shell脚本删除服务器中的文件

linux - Bash text multi line into one line with spec.数据

linux - 使用 sed 删除一段文本

python - 在 crontab 的 shell 脚本中使用 python3

linux - 在 Qemu 上运行的 RISC-V Linux

linux i2c 模块不完整 xfer (0x48) 错误

c++ - boost::interprocess::file_lock 与 std::ostream 一起使用时的错误行为

bash - 为什么我不将 shell 命令的结果保存到我的变量中?