Shell 脚本学习 — 访问 Shell 脚本的参数
2012-05-15 13:34
381 查看
所谓的位置参数指的也就是Shell脚本的命令行参数。在Shell函数里,它们同事也可以是函数的参数。各参数都有整数来命名。基于历史原因,当它超过9,就应该用大括号把数字框起来:
此外,通过特殊变量,我们还可以取得参数的总数,以及一次取得所有参数。
案例
假设你想知道某个用户正使用的终端是什么,你当然可以直接使用who命令,然后在输出中自己慢慢找。这么做很麻烦又容易出错——特别是当系统的用户很多的时候。你想做的只不过是在who的输出中找到那位用户,这个时候你可以用grep命令来进行查找操作,它会列出与grep第一个参数匹配的每一行。假设你要找的用户是 betsy:
知道如何寻找特定的用户后,我们可以将命令放进脚本里,这段脚本的第一个参数就是我们要找的用户名称:
当然,这个程序还没有达到完美。要是我们没给任何参数,会发生什么事?
具体的测试参数,待续...
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.
具体的测试参数,待续...
相关文章推荐
- 如何访问Shell脚本的参数
- shell脚本选项参数处理学习getopts|getopt
- Shell 编程学习笔记:脚本输入参数
- 访问Shell脚本参数
- shell 脚本 输入参数 学习
- linux学习之shell脚本 ------- 脚本参数传递
- 脚本学习-----常用shell脚本if参数
- shell脚本学习总结,参数
- shell学习 - 处理脚本的多参数输入
- 【Shell脚本学习23】Shell函数参数
- Shell脚本学习之基本参数
- 【Shell脚本学习23】Shell函数参数
- shell脚本:访问shell脚本的参数
- Mac Shell脚本中使用echo的-n参数不生效
- Git学习-->如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器?
- shell学习笔记之if参数
- linux学习之shell脚本 ------- 变量
- Shell 脚本基础学习 (二)
- shell脚本实现被远程时5次输错密码而直接禁止访问
- shell脚本学习总结----cut+sort+uniq+tr+find+dd+file