所谓的位置参数(positional parameters)指的也就是Shell脚本的命令行参数(command-line arguments)。在Shell函数里,它们同时也可以是函数的参数。各参数都由整数来命名。基于历史的原因,当其超过9,就应该用大括号把数字框起来:
echo first arg is $1
echo tenth arg is ${10}
假设你想知道某个用户正使用的终端是什么,你当然可以直接使用who命令,然后再输出中慢慢找。这么做很麻烦又容易出错--特别是当系统的用户很多的时候。你想做的只不过是在 who 的输出中找到那位用户,这个时候你可以用 grep 命令来进行查找操作,它会列出第一个参数(所指定的模式)匹配的每一行。我的虚拟机上的用户较少,以many为例。
[many@avention Desktop]$ who | grep many
many :0 2018-09-25 00:26 (:0)
many pts/0 2018-09-25 00:26 (:0)
知道如何寻找特定的用户后,我么可以将命令放进脚本里,这段脚本的第一个参数就是要找的用户名称:
[many@avention my_sh]$ cat > finduser.sh #建立新的脚本文件
#! /bin/sh
who | grep $1 #查看第一个参数所指定你的用户是否登录
[many@avention my_sh]$ chmod u+x finduser.sh #为脚本的拥有者设置可执行权限
[many@avention my_sh]$
[many@avention my_sh]$ ./finduser.sh many #测试,寻找 many用户
many :0 2018-09-25 00:26 (:0)
many pts/0 2018-09-25 00:26 (:0)
[many@avention my_sh]$
在shell脚本中,注释(comment)是以 # 开头的。为了增加脚本的可读性,多写注释。
关于命令行参数的更多细节,在后续章节中补充。