我找到了测试 Bash 中是否存在错误的指南。即,当
x='() { :;}; echo VULNERABLE' bash -c x
Run Code Online (Sandbox Code Playgroud)
不返回任何东西,它很脆弱。但是有没有像 C 中那样 bash 可以返回一些东西但用户看不到它的情况?
是的,您正在寻找退出代码,但这在这里完全无关紧要。VULNERABLE如果您使用的 bash 版本易受攻击,您运行的测试将打印到您的终端。如果你没有看到它,你就通过了测试。
虽然程序确实可以返回不一定显示给用户的信息,但这与这里的问题无关。例如,要在 bash 中查看程序的退出代码,请使用$?变量:
$ ls /tmp > /dev/null
$ echo $?
0
$ ls /nonexistent_directory > /dev/null
ls: cannot access /nonexistent_directory: No such file or directory
$ echo $?
2
Run Code Online (Sandbox Code Playgroud)
所以是的,可以返回一些你看不到的东西,除非你要求它但没有,这并不意味着你运行的测试可能失败了。