我正在使用这个:
$ uname -a
CYGWIN_NT-6.1 bassoon 1.7.15(0.260/5/3) 2012-05-09 10:25 i686 Cygwin
$ bash --version
GNU bash, version 4.1.10(4)-release (i686-pc-cygwin)
$ cat myexpr.sh
#!/bin/sh
echo "In myexpr, Before expr"
ac_optarg=`expr x--with-gnu-as : 'x[^=]*=\(.*\)'`
echo "ac_optarg=$ac_optarg"
echo "In myexpr, After expr"
$ cat myexpr2.sh
#!/bin/sh
set -e
echo "In myexpr, Before expr"
ac_optarg=`expr x--with-gnu-as : 'x[^=]*=\(.*\)'`
echo "ac_optarg=$ac_optarg"
echo "In myexpr, After expr"
两个脚本之间的唯一区别是 myexpr2.sh 使用“set -e”
$ echo $$
2880
$ ./myexpr.sh
In myexpr, Before expr
ac_optarg=
In myexpr, After expr
$ ./myexpr2.sh
In myexpr, Before expr
到目前为止,预期的行为。
如果我在父 shell(上面的 PID 2880)中执行此操作:
$ set -e
$ ./myexpr.sh
父外壳退出!那就是上面我做了“set -e”的pID 2880
这不是 Linux 或 cygwin 1.5.12 上的行为。这是cygwin中的错误还是cygwin上的BASH?