typ*_*ypo 12 bash shell-script
Bash 是唯一允许用于可执行文件的 shell 脚本语言。
可执行文件必须
#!/bin/bash
以最少数量的标志开始。使用set
来设置shell选项,以便您的通话脚本bash script_name
不会破坏其功能。
具体来说,关于使用set
以避免破坏功能的部分。以这种特殊方式调用它与它有什么关系?
ilk*_*chu 29
“和最小数量的标志”是指在 hashbang 行中设置的标志。当脚本作为 启动时,它们会被读取./somescript
,内核读取 hashbang 行,从那里找到的路径和选项构建一个新的参数列表。但是,如果脚本以 启动,则不会发生这种情况bash somescript
,因为要求内核运行bash
,而不是脚本本身。在最终阅读脚本时,shell 本身将该行视为要忽略的注释。
例如,尝试以下脚本(在 中./hello
):
#!/bin/bash -x
echo hello
Run Code Online (Sandbox Code Playgroud)
并以两种方式运行它:
$ ./hello
+ echo hello
hello
$ bash hello
hello
Run Code Online (Sandbox Code Playgroud)
来自 的额外跟踪输出-x
仅在第一种情况下显示,第二次调用时忽略该标志。
使用set
命令显式启用标志将使其以任何方式工作:
#!/bin/bash
set -x
echo hello
Run Code Online (Sandbox Code Playgroud)
(但请注意,如果你曾经尝试用这个perl
,它没有解释hashbang线本身也。)