ABS这书 不错!有机会要好好看一下
$HOME 当前用户的家目录
$0 shell 脚本的名字
$1, $2脚本程序的参数
$# 传递给脚本的参数个数
$$ shell脚本的进程号,脚本程序通常会用它来生成一个唯一的临时文件,如/tmp/tmpfile_$$
$* 其值为所有的位置参量
$@ 除了被双引号引用的情况,含义与 $* 相同
"$*" 其值为 "$1 $2 $3"
"$@" 其值为 "$1" "$2" "$3"
$? 保存前一个命令的返回码
:- 变量的缺省值
:= 给空变量指定一个缺省值
:? 检查变量是否存在
shift 命令每执行一次,变量个数($#)减1,变量值提前1位
cmd > filename 2>&1 将标准输出和标准错误一起重定向到一个文件中
1> 或者 > 重定向标准输出, 2>重定向标准错误, &>代表标准输出和标准错误
cat /dev/null > var/log/messages 清空messages文件中的内容,但是让文件依然存在并且不改变权限
跟踪模式运行shell 脚本: shell -x a.sh
子串的变量扩展
${变量 % 模式} 将变量值的尾部与模式进行最小匹配,并将匹配到的部分删除
${变量 %% 模式} 将变量值的尾部与模式进行最大匹配,并将匹配到的部分删除
${变量 # 模式} 将变量值的头部与模式进行最小匹配,并将匹配到的部分删除
${变量 ## 模式} 将变量值的头部与模式进行最大匹配,并将匹配到的部分删除
${# 变量} 替换为变量中的字符个数。如果是 * 或 @ ,长度则是位置参量的个数
linus shell中的特殊字符
~ 主目录,相当于$HOME
` 命令替换,如`pwd`返回pwd命令执行的结果字符串
( 启动子shell
) 停止子shell
$ 变量表达式符号
& 后台作业,将此符号置于命令末端,则让命令于后台运行
' 强引用, 其它的特殊字符不被替换,如a=1; echo 'a = $a'
" 弱引用, 其它的特殊字符不被替换,如a=1; echo "a = $a"