shell 脚本小常识1
author:润明 2012-2-16 QQ:226399587 http://blog.csdn.net/runming918
Shell 比较符号:
都是英文缩写,知道英文含义就很好记。
等于 -eq (equal)
不相等 -ne (not equal)
大于 -gt (greater than)
小于 -lt (less than)
大于或等于 -ge (greater than or equal)
小于或等于 -le (less than or equal)
-------------------------------------------------------------------------------------------------------
$#: 获取传入参数个数
# 检验传入参数个数是否有问题 if [ $# -eq 2 ];then SOURCEFILE="$1" SEQUENCE="$2" else echo "Usage:" exit fi |
$?: 前面脚本执行后返回结果
# 检查前面脚本执行情况-- if [ $? -ne 0 ];then 表示错了 if [ $? -ne 0 ];then echo "Error!! [ `date '+%Y%m%d %H:%M:%S'` ]Deal with $SOURCEFILE is wrong. Please check!" exit else echo "[ `date '+%Y%m%d %H:%M:%S'` ]Deal with $SOURCEFILE is completed!" fi |
Awk 中 :FILENAME 表示传入文件名
if(FILENAME == "numbers.cfg") { arr_id_msisdn[$1] = $2; } |
$0 返回文件名,./执行是会返回路径,如果只需要文件名,最好加上 ·basename $0·
$ cat a.sh #!/bin/sh echo Hello world this is `basename $0` calling $ ./a.sh Hello world this is a.sh calling |
特定shell变量
$# | 传递到脚本的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的进程ID号 |
$@ | 与$#相同,但是使用时加引号,并在引号中返回每个参数 |
$- | 显示shell使用的当前选项,与set命令功能相同 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |