使用Linux Set命令

在通过雾中相互冲突的迹象,丢失的商人徘徊。
Gremlin / Getty Images

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:未绑定变量

许多额外的选择可用,但这些是最有用的。

加入网络世界社区足球竞猜app软件Facebooklinkedin.评论是最重要的主题。
有关的:

版权所有©2021.足球竞彩网下载

SD-WAN采购商指南:要询问供应商(和您自己)的关键问题