shell笔记

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"













你可能感兴趣的:(shell笔记)