加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

常见 Bash 内置变量介绍

发布时间:2020-12-15 17:13:41 所属栏目:安全 来源:网络整理
导读:#!/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:

#!/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 -

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读