私はこれを使用しています:
$ 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"
2 つのスクリプトの唯一の違いは、myexpr2.sh が「set -e」を使用することです。
$ echo $$
2880
$ ./myexpr.sh
In myexpr, Before expr
ac_optarg=
In myexpr, After expr
$ ./myexpr2.sh
In myexpr, Before expr
これまでのところ、予想される動作。
親シェルでこれを行う場合 (上記の PID 2880):
$ set -e
$ ./myexpr.sh
親シェルが終了します! それは、「set -e」を実行した上記の pID 2880 です。
これは、Linux または cygwin 1.5.12 での動作ではありません。これは cygwin または cygwin の BASH のバグですか?