Linux.放命令允许您更改shell选项的值或显示shell变量的名称和值。很少使用,它是一个Bash内置,但比大多数内置更复杂。
如果在没有任何参数的情况下使用该命令,则会获取所有设置的列表 - 所有shell变量和函数的名称和值。虽然看看!您将最终与屏幕上流下的输出洪流结束。我的Fedora系统上只有3,000行输出:
$ set |WC -L 2954
列表的顶部看起来像你在下面看到的那样,但输出随着你的移动而变得更加复杂。
$ set |头-10 BASH = /斌/庆典BASHOPTS = cdspell:checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:progcomp:promptvars:源路径BASH_ALIASES =()BASH_ARGC =([0] =”0“)bash_argv =()bash_cmds =()bash_completion_versinfo =([0] =”2“[1] =”11“)bash_lineno =()bash_source =()bash_versinfo =([0] =”5“[1]= “1”[2] = “0”[3] = “1”[4] = “释放”[5] = “x86_64的-红帽-Linux的GNU”)
更实际上,你可以做一些非常有用的事情放。让我们检查一些人。
调试您的脚本
你可以使用set -x.命令要做一些脚本调试。换句话说,当您使用此选项时,Bash将向您展示更多的输出,以显示您的脚本最多的输出。在此示例中使用的脚本有很多检查,然后打印所选文件的顶线。
#!/ bin / bash set -x if [$#-lt 2];然后回显“使用:$ 0行文件名”退出1 fi,如果[!-f $ 2];然后回声“错误:文件$ 2找不到”未找到“exit 3 exho echo文件头顶 - $ 1 $ 2 fi msg =”bye“echo $ msg
没有set -x.,脚本将显示如下所示:
$ script3 3文件文件#!/ bin / bash -x日期bye
与之set -x.,它将每个命令显示为运行以及输出。
$ script3 3 file + ‘[‘ 2 -lt 2 ‘]’ + [[ 3 != [0-9]* ]] + ‘[‘ ‘!’ -f file ‘]’ + echo top of file top of file + head -3 file #!/bin/bash -x date + msg=bye + echo bye Bye
您还可以通过放置来调用调试-X在“shebang线”(即,脚本的顶线)上这样的:
#!/ bin / bash -x
使用的好处之一set -x.进而设置+ X.是第一个放开始调试和第二个放关闭它,这样如果您需要专注于脚本的一小部分,您可以看到脚本的详细输出。
如果[!-f $ 2];然后回声“错误:文件$ 2找不到”退出文件头的ext echo顶部 - $ 1 $ 2 fi set + x
其他放选项可以打开,然后以相同的方式再次关闭。
自动导出
使用set -a.,您可以导致您创建的任何变量或函数自动导出,以便子屏幕和脚本可以使用它们。这是一个例子:
$ set -a $ 1 = 1 $ 2 = 2 $三= 3 $四= 4 $ / bin / bash <==启动新壳$ echo $ 1 $ 2 $ 3 $ 4 $ 4 1 2 3 4
如果命令失败,请立即退出
这set -e.命令将在运行到错误时立即导致脚本退出。在这个例子中,set -e.调用命令。
$ cat script1#!/ bin / bash set -e cat nosuchfile echo“这么久!”
正如您可能怀疑的那样,“NOSUCHFILE”文件不存在,因此脚本在该点处退出set -e.。决赛回声命令永远不会有机会运行。
$ script1 cat:nosuchfile:没有这样的文件或目录
不要忽略不存在的变量
默认情况下,Bash将忽略任何不存在的变量。例如,在下面的脚本中,Bash将忽略这一事实$ var2尚未定义并简单地显示$ var1。
$ cat script1#!/ bin / bash var1 =“123”echo $ var1 $ var2 $ ./script1 123
如果你补充说设置-U.到脚本,它报告了问题。
$ cat script2#!/ bin / bash set -u var1 =“123”回声$ 5 $ var2
$ ./script2 ./script1:第5行:var2:未绑定变量
许多额外的放选择可用,但这些是最有用的。