变量赋值虽然简单但也有很多需要注意的地方下面是一下我从书中整理出的注意点:
1. 一定不要在赋值前后有空格
VARIABLE =value 脚本将尝试运行一个“VARIABLE"的命令带着一个“=value"参数
VARIABLE= value 脚本将尝试运行一个“value"的命令,带着一个被赋值成“”值的环境变量“VARIABLE".
2.有无引用的区别
hello="AB C D"
echo $hello 输出ABCD
echo “$hello“ 输出AB C D
echo '$hello' 输出$hello
引用一个变量讲保留其中的空白,全引用将导致‘$’变成一个单独的字符
3.使用$(...) 机制进行变量赋值,事实上,这是命令替换的一种形式
R=$(cat /ect/hllo.c)
4. 变量都是无类型的
5.特殊变量:$0是脚本的名字,$1是第一个参数,$2是第二个参数依次类推,到10以后要加大括号${10}
$#是传到脚本里的位置参数的个数
$PWD 工作目录(当前所在目录)
$REPLY如果read命令如果没有给出变量,那么输入将保存在$REPLY中
$SECONDS 这个脚本已经执行的时间,单位为秒
$UID 用户ID号
$* 所有的位置参数,被作为一个单词 ,必须被“”引用
$@ 与$*相同,但是每个参数都是一个读了的""引用字串,这就意味着参数被完整地传递,并没有被解释和扩展,也意味着每个参数列表中的每个参数都被当成一个独立的单词。
$! 在后台运行的最后的工作的PID
$_ 保存之前执行的命令的最后一个参数
$? 命令,函数或者脚本本身的退出状态
$$ 脚本本身的进程ID
${#var} 讲给出字符串长度, ${#array}是数组中的第一个元素的长度
${#array[*]}和${#array[@]}讲给出数组元素的个数
${#*} 和${#@}将给出位置参数的个数