【发布时间】:2018-04-25 05:25:00
【问题描述】:
我尝试在 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 选项解决这个问题?
【问题讨论】:
-
你说你是作为
/bin/sh脚本运行的?你试过/bin/bash脚本吗? [社帮#!/bin/bash] -
是的,我遇到了同样的异常
-
您是否可以提供 ffmpeg 脚本的“原始部分”以及“修改后的部分”?或者在它运作良好之前有什么以及你为了得到这个而改变了什么?
-
其他包的组成发生了变化。
-
更新了 Windows 10?