Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 集合-e不尊重逻辑not_Bash_Shell_Zsh_Ksh - Fatal编程技术网

Bash 集合-e不尊重逻辑not

Bash 集合-e不尊重逻辑not,bash,shell,zsh,ksh,Bash,Shell,Zsh,Ksh,在几个shell中,逻辑不是!将反转程序的返回代码 但是,在具有set-e的shell脚本中,逻辑not似乎会导致程序实际上从未失败。为什么会这样 在bash、zsh和ksh中测试,结果相同 $cat test.sh set-ex 设置 触摸我的文件 观察可用文件 ls。 成功 ls-myfile;回声$? 这正如预期的那样成功 ! 公证文件;回声$? 当返回码明显为非零时,为什么不退出? ! ls-myfile;回声$? 当存在非零返回代码时,这将按预期退出 公证文件;回声$? 因为我们就在上

在几个shell中,逻辑不是!将反转程序的返回代码

但是,在具有set-e的shell脚本中,逻辑not似乎会导致程序实际上从未失败。为什么会这样

在bash、zsh和ksh中测试,结果相同

$cat test.sh set-ex 设置 触摸我的文件 观察可用文件 ls。 成功 ls-myfile;回声$? 这正如预期的那样成功 ! 公证文件;回声$? 当返回码明显为非零时,为什么不退出? ! ls-myfile;回声$? 当存在非零返回代码时,这将按预期退出 公证文件;回声$? 因为我们就在上面退出,所以永远不会执行 回声测试通过 结果:

bash test.sh +触摸我的文件 +ls。 myfile test.sh +ls myfile 我的文件 +回声0 0 +符号文件 ls:无法访问“notafile”:没有此类文件或目录 +回声0 0 +ls myfile 我的文件 +回声1 1. +符号文件 ls:无法访问“notafile”:没有此类文件或目录
这是指定的行为。从

如果失败的命令是紧跟在while或until关键字之后的命令列表的一部分、if语句中的测试的一部分、在&&或| |列表中执行的任何命令的一部分(除了最后一个&&或| | |之后的命令、管道中的任何命令,但最后一个命令除外),则shell不会退出,或者,如果命令的返回状态与!相反


这是指定的行为。从

如果失败的命令是紧跟在while或until关键字之后的命令列表的一部分、if语句中的测试的一部分、在&&或| |列表中执行的任何命令的一部分(除了最后一个&&或| | |之后的命令、管道中的任何命令,但最后一个命令除外),则shell不会退出,或者,如果命令的返回状态与!相反

这也是我的斜体字:

在执行while、if或elif保留字之后的复合列表时,应忽略-e设置,直到以开始的管道!保留字,或与或列表中除最后一个以外的任何命令

这也是我的斜体字:

在执行while、if或elif保留字之后的复合列表时,应忽略-e设置,直到以开始的管道!保留字,或与或列表中除最后一个以外的任何命令


在文档中,这是一个特别提到的例外。在决定使用set-e之前,这非常值得一读。在文档中,这是一个特别提到的例外。在决定使用set-e之前,这非常值得一读。这个问题不仅仅涉及GNU bash@AndrewHenle有正确的引用。bash引用基本上说了相同的事情,因为它遵循POSIX要求。在语义上仍然错误,而且它不利于在GNU/Linux世界中形成几乎垄断。这个问题不仅仅涉及GNU bash@AndrewHenle有正确的引用。bash引用基本上说了相同的事情,因为它遵循POSIX要求。在语义上仍然错误,并且它不能在GNU/Linux世界中形成几乎垄断。