为了成为一个灵活的工具,一个合格的脚本必须提供额外的信息来说明此脚本的作用,如何执行此脚本以及在哪儿执行此脚本。和命令一样脚本也使用参数。开关和参数提高了重用性同时也减少了成本,节省了时间。

定位的参数

有三种有效的方法可以使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

更多相关文章

  1. linux-参数-argparse模块-(未完待续)
  2. 在Linux和FreeBSD之间移植bash脚本的正确方法是什么?
  3. linux下jboss7.1 启动,关闭脚本
  4. 使用Python+selenium实现第一个自动化测试脚本
  5. 如何转换python中可执行的python脚本?
  6. linux shell脚本指令
  7. Shell脚本编写简明教程
  8. 在PreparedStatement中重用参数?
  9. LINUX下用SHELL脚本执行带输入输出参数的ORACLE存储过程并得到结

随机推荐

  1. Android按键消息传播流程
  2. Android触控
  3. Android 发送短信 源代码
  4. android input 事件传递主要流程
  5. android点滴4
  6. Android studio 中调用ndk-build 进行编
  7. android用ViewPager实现欢迎界面
  8. Android通知栏消息(基本文字通知)
  9. Android中获取屏幕的宽和高
  10. MTK Android Driver :camera