无法理解异常Shell脚本weird_sh.sh的运行结果,求解析原因
奇怪Shell脚本的运行原理解析
脚本内容
#!/bin/echo 11 22 echo 33
运行命令及输出
$ ./weird_sh.sh aa 11 22 ./weird_sh.sh aa
背后的原因
- Shell脚本第一行的
#!(shebang)用于指定脚本的解释器。这里没有用常规的#!/bin/bash,而是指定了解释器为/bin/echo。 - 执行脚本时,内核会读取shebang行,调用
/bin/echo程序,并按顺序传递以下参数:- shebang行中解释器后的参数:
11、22 - 脚本自身的路径:
./weird_sh.sh - 执行脚本时传入的命令行参数:
aa
- shebang行中解释器后的参数:
/bin/echo的功能是输出所有传入的参数,因此最终会打印出11 22 ./weird_sh.sh aa。- 脚本第二行的
echo 33不会被执行,因为/bin/echo只是简单的输出工具,不会读取并执行脚本后续的内容。
内容的提问来源于stack exchange,提问作者Wu Jacky
相关产品推荐
相关产品推荐

