使用Bash编写Linux Shell脚本-9. 参数和子壳
为了成为一个灵活的工具,一个合格的脚本必须提供额外的信息来说明此脚本的作用,如何执行此脚本以及在哪儿执行此脚本。和命令一样脚本也使用参数。开关和参数提高了重用性同时也减少了成本,节省了时间。
定位的参数
有三种有效的方法可以使Linux脚本使用参数。第一种使用定位参数。脚本根据在命令行出现参数的位置调用参数。因为其他两种依赖于定位参数,所以先讨论这个。
Bash变量使用“$0”标示脚本的路径。不必是全路径名,但是它定义了执行脚本所在的路径。
$ printf “%s\n” “$0”
/bin/bash
在这个例子中,Bash会和开始命令/bin/bash。
当参数命令组合了basename命令时,只留下脚本的名字,其余的路径部分被删除了。
一些微缩版本使用Bash的字符串替换功能来避免执行外面的程序。
$ declare -rxSCRIPT=${0##*/}
$ printf “%s\n” “$SCRIPT”
Bash
通过使用“$0”来找到脚本的名字,在脚本被拷贝和重新命名之后,就不会出现错误文件名的潜在威胁了。SCRIPT总是保持这正确的脚本名。
变量“$#”包含有脚本或外壳会话参数的个数。如果没有参数,$#总是0。这个参数没有将脚本名包含在$0中。
$ printf “%d\n” $#
0
前面九个参数放置在变量$1~$9中。(九个之后的参数如果要访问使用大括号)。如果设置了nounset外壳选项,访问一个未定义的参数会产生一个错误,就像未定义变量名一样的错误。
$ printf “%s\n” $9
bash: $9: unboundvariable
变量“$@”或者是“?*”将所有参数作为一个字符串返回。
当使用定位参数时,Bash并不区分它们是参数还是开关,对于脚本来说在命令行的每一个项目作为独立的参数来对待。
考虑一下下面的脚本,显示在列表9.1中:
Listing 9.1 params.sh
更多相关文章
- linux-参数-argparse模块-(未完待续)
- 在Linux和FreeBSD之间移植bash脚本的正确方法是什么?
- linux下jboss7.1 启动,关闭脚本
- 使用Python+selenium实现第一个自动化测试脚本
- 如何转换python中可执行的python脚本?
- linux shell脚本指令
- Shell脚本编写简明教程
- 在PreparedStatement中重用参数?
- LINUX下用SHELL脚本执行带输入输出参数的ORACLE存储过程并得到结