当在循环内用管道替换时,MSYS2 bash掉落

时间:2017-11-12 12:43:40

标签: bash shell cygwin msys2

下一个命令我试图在MSYS2 x64和Cygwin64 bash中执行,在控制台中和/ bin / sh脚本中执行。

for a in 0; do
    echo b=$(echo "c-d" | tr - _)
done

获取输出:b =
当预期:b = c_d

带有STATUS_STACK_OVERFLOW异常的sh.exe.stackdump文件。 这只发生在一个循环中,带有替换和管道,对该行进行任何操作:tr,grep,sed。 Bash版本4.4.12(最新版本)。

它是ffmpeg配置脚本的一个改进部分,解析选项,以前在同一个Cygwin构建中没有错误地运行。

原始脚本是

for opt do
    case "$opt" in
        #...
        --enable-?*|--disable-?*)
            eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
            #...
        ;;
        #...
     esac
done

有没有办法用bash选项解决这个问题?

1 个答案:

答案 0 :(得分:0)

可能 - 作为选项尝试 - 指定选项的结尾:

tr -- - _