常见 Bash 内置变量介绍

#!/bin/ARGS=<span style="color: #800080">3 # 这个脚本需要 <span style="color: #800080">3<span style="color: #000000"> 个参数.
E_BADARGS=<span style="color: #800080">65<span style="color: #000000"> # 传递给脚本的参数个数不对.
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Args number is : $#<span style="color: #800000">"
<span style="color: #0000ff">echo $<span style="color: #800080">0
<span style="color: #0000ff">if [ $# -ne <span style="color: #800000">"<span style="color: #800000">$ARGS<span style="color: #800000">"<span style="color: #000000"> ]

测试脚本的参数个数。

<span style="color: #0000ff">then
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Usage: $(basename $0) first-parameter second-parameter third-parameter<span style="color: #800000">"<span style="color: #000000">
exit $E_BADARGS
<span style="color: #0000ff">fi<span style="color: #000000">

开始干正事儿

#!/bin/ $ $ $

arg $*

arg

arg

[ = ]; = ARG [ = ]; = [ -z ];

还常常与 命令一起使用来丢弃参数 $!/bin//test. # # # 都会丢弃$ 将包含剩下的参数.

#!/bin/set -- <span style="color: #800000">"<span style="color: #800000">First one<span style="color: #800000">" <span style="color: #800000">"<span style="color: #800000">second<span style="color: #800000">" <span style="color: #800000">"<span style="color: #800000">third:one<span style="color: #800000">" <span style="color: #800000">"" <span style="color: #800000">"<span style="color: #800000">Fifth: :one<span style="color: #800000">"<span style="color: #000000">

设置这个脚本的参数,$<span style="color: #800080">1,$<span style="color: #800080">2<span style="color: #000000">,等等.

index=<span style="color: #800080">1<span style="color: #000000"> # 起始计数.
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Listing args with \"\$@\":<span style="color: #800000">"
<span style="color: #0000ff">for arg <span style="color: #0000ff">in <span style="color: #800000">"<span style="color: #800000">$@<span style="color: #800000">"
<span style="color: #0000ff">do
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Arg #$index = $arg<span style="color: #800000">"<span style="color: #000000">
let <span style="color: #800000">"<span style="color: #800000">index+=1<span style="color: #800000">"
<span style="color: #0000ff">done<span style="color: #000000"> # $@ 把每个参数都看成是单独的单词.
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Arg list seen as separate words.<span style="color: #800000">"

$ &]

$ &=$! &=$! $pid2 # 等待第二个后台进程结束

#!/bin/<span style="color: #0000ff">echo $_ # ./test.<span style="color: #0000ff">sh

<span style="color: #0000ff">du >/dev/<span style="color: #0000ff">null<span style="color: #000000"> # 这么做命令行上将没有输出.
<span style="color: #0000ff">echo $_ # <span style="color: #0000ff">du

<span style="color: #0000ff">ls -al >/dev/<span style="color: #0000ff">null<span style="color: #000000"> # 这么做命令行上将没有输出.
<span style="color: #0000ff">echo $_ # -<span style="color: #000000">al (这是最后的参数)

:
<span style="color: #0000ff">echo $_ # :

$ hello && cd $_

#!/bin/--d -v golang.org/x/net/-u github.com/jstemmer/go-junit--v >& >=$?/bin/go-junit-report < tmp >exit ${status}

#!/bin/output_args_one_per_line()
{
<span style="color: #0000ff">for<span style="color: #000000"> arg
<span style="color: #0000ff">do <span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">[$arg]<span style="color: #800000">"
<span style="color: #0000ff">done<span style="color: #000000">
}

<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">IFS=\" \"<span style="color: #800000">"
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">-------<span style="color: #800000">"<span style="color: #000000">

IFS=<span style="color: #800000">" <span style="color: #800000">"<span style="color: #000000">
var=<span style="color: #800000">"<span style="color: #800000"> a b c <span style="color: #800000">"<span style="color: #000000">
output_args_one_per_line $var
<span style="color: #0000ff">echo; <span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">IFS=:<span style="color: #800000">"
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">-----<span style="color: #800000">"<span style="color: #000000">

IFS=<span style="color: #000000">:
var=<span style="color: #800000">"<span style="color: #800000">:a::b:c:::<span style="color: #800000">" # 与上边一样,但是用<span style="color: #800000">" <span style="color: #800000">"替换了<span style="color: #800000">"<span style="color: #800000">:<span style="color: #800000">"<span style="color: #000000">.
output_args_one_per_line $var

使用 : 后,冒号前后的空字符也被解析了。

exit <span style="color: #800080">0

PATH=${PATH}:/opt/bin

$ cd -

#!/bin/E_WRONG_DIRECTORY=<span style="color: #800080">73
<span style="color: #0000ff">clear<span style="color: #000000"> # 清屏.
TargetDirectory=/home/nick/<span style="color: #000000">testdir
cd $TargetDirectory
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Deleting stale files in $TargetDirectory.<span style="color: #800000">"

<span style="color: #0000ff">if [ <span style="color: #800000">"<span style="color: #800000">$PWD<span style="color: #800000">" != <span style="color: #800000">"<span style="color: #800000">$TargetDirectory<span style="color: #800000">"<span style="color: #000000"> ]
<span style="color: #0000ff">then<span style="color: #000000"> # 防止偶然删错目录.
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Wrong directory!<span style="color: #800000">"
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">In $PWD,rather than $TargetDirectory!<span style="color: #800000">"
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Bailing out!<span style="color: #800000">"<span style="color: #000000">
exit $E_WRONG_DIRECTORY
<span style="color: #0000ff">fi

<span style="color: #0000ff">rm -rf <span style="color: #000000"> # 删除文件
<span style="color: #0000ff">rm .[A-Za-z0-<span style="color: #800080">9]
<span style="color: #000000"> # 删除点文件

<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Done.<span style="color: #800000">"
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Old files deleted in $TargetDirectory.<span style="color: #800000">"<span style="color: #000000">
exit <span style="color: #800080">0

set -

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...