1.位置变量参数即可传入到脚本的参数,最多可以访问9个,比如 ./xxx.sh a b c d
其中 $0 是脚本名字 $1 是第一个参数 a 以此类推
2. 特殊参量
$# 传递到脚本的参数个数 |
$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,可以超过9个 |
$$ 脚本运行的当前id |
$! 后台运行的最后一个进程的进程id |
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数 |
$- 显示shell使用的当前选型, 与set命令功能相同 |
$? 显示最后命令的退出状态 |
1. 向脚本传入参数
如果想输入更多的参数(超过9个)可以使用 shift 命令
作用:使参数位置向左偏移一位。
例子:
#!/bin/sh
loop=0
while[ $# -ne 0 ]
do
echo $#
echo $1
shift
done
2. 另一种经典的方式如下.
getopts option_string variable
一般形式为:
while getopts abc: OPTION
do
case $OPTION in
a) ……
;;
b)………
;;
c) VALUE=$OPTARG
………
;;
/?)………
;;
esac
………….
done
如果选项串前不加:则系统会给出错误提示,同时也会到/?处,如果想屏蔽掉系统提示则在选项串前加冒号,例如 :abc:
expr用法
- 计算:expr 10 + 20 显示 30
- 增量计数:一般用在循环里。 LOOP=`expr $LOOP + 1`
- 数值测试。如果不是整数,则返回错误。
expr rr + 1
其也可以返回自身的退出状态,但是成功返回1.
测试两个字符串是否相等:
VALUE=hello
expr $VALUE = “hello”
1
echo $?
0
- 模式匹配。通过指定冒号 选项计算字符串中字符数 .*表示任何字符重复0次或多次
VALUE=accounts.doc
expr $VALUE : October 8, ‘.*’
12