下一个命令我试图在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选项解决这个问题?
答案 0 :(得分:0)
可能 - 作为选项尝试 - 指定选项的结尾:
tr -- - _