写脚本时候常常需要用到变量,但是Linux中的变量和一般编程语言中的变量差别较大,这里罗列一些比较细节的用法。
变量的特殊用法
$?表示上一个语句的执行结果$#脚本或者函数输入的参数数量$0表示脚本名称$1-n表示具体输入的第几个变量$@表示所有变量${!name}间接引用,表示将$name这个变量的值作为一个变量的名称,如下:$ export xyzzy=plugh ; export plugh=cave
$ echo ${xyzzy} # normal, xyzzy to plugh
plugh
$ echo ${!xyzzy} # indirection, xyzzy to plugh to cave
cave
这个特殊用法还有一个用法,6. **shift**命令,shift可以将参数依次轮询,即通过`$1`就可以访问所有元素。注意这个不会影响`$0`。shifit可以接受参数,指定跳跃多少个参数。但是如果跳跃的值大于了当前的`$#`,那么参数不会受影响,而shift则会返回0。下面这个案列展示了这个效果:
```bash
#!/bin/bash
# shift-past.sh
shift 3 # Shift 3 positions.
n=3; shift $n
# Has the same effect.
echo "$1"
exit 0
# ======================== #
until [ -z "$1" ]
do
echo -n "$1 "
shift 20 # If less than 20 pos params,
done #+ then loop never ends!
# When in doubt, add a sanity check. . . .
shift 20 || break
- let指令用于变量数值的加减。
- 字符串在加减中默认为0