Shell 脚本学习 — 访问 Shell 脚本的参数

所谓的位置参数指的也就是Shell脚本的命令行参数。在Shell函数里,它们同事也可以是函数的参数。各参数都有整数来命名。基于历史原因,当它超过9,就应该用大括号把数字框起来:

echo first arg is $1
echo tenth arg is ${10}

此外,通过特殊变量,我们还可以取得参数的总数,以及一次取得所有参数。

案例

假设你想知道某个用户正使用的终端是什么,你当然可以直接使用who命令,然后在输出中自己慢慢找。这么做很麻烦又容易出错——特别是当系统的用户很多的时候。你想做的只不过是在who的输出中找到那位用户,这个时候你可以用grep命令来进行查找操作,它会列出与grep第一个参数匹配的每一行。假设你要找的用户是 betsy:

who | grep betsy
betsy   pts/3   Dec 27 11:07   (flags-r-us.example.com)

知道如何寻找特定的用户后,我们可以将命令放进脚本里,这段脚本的第一个参数就是我们要找的用户名称:

cat > finduser    #建立新文件
#! /bin/sh

# finduser --- 查看第一个参数所指定的用户是否登录

who | grep $1
^D                #以 End-of-file 结尾
chmod +x finduser        #设置执行权限
./finduser betsy         #测试:寻找 betsy
betsy          pts/3      Dec 27 11:07   (flags-r-us.example.com)
./finduser benjamin      #再找找好友 Ben
benjamin       dtlocal    Dec 27 17:55   (kites.example.com)
mv finduser $HOME/bin    #将这个文件存进自己的bin目录

当然,这个程序还没有达到完美。要是我们没给任何参数,会发生什么事?

finduser
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.

具体的测试参数,待续...

posted @ 2012-05-15 13:34  Old  阅读(1033)  评论(0编辑  收藏  举报