1. 跨脚本文件调用
需要在文件的开始加上
sh /dev/xxxxx.sh
或者
. /dev/xxxxxx.sh
2. $? $# $1 $@ $*的含义
变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体。
以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
3. 判断语句中常用的知识点
在linux 中 命令执行状态:0 为真,其他为假
第一个条件为假时,第二条件不用再判断,最终结果已经有;
第一个条件为真时,第二条件必须得判断;
逻辑与: &&
逻辑或: ||
逻辑非: !
数值比较符:
-eq //等于(equal)
-ne //不等于( not equal)-gt //大于( greater than)
-lt //小于( less than)
-ge //大于等于( greater or equal)
-le //小于等于(less or equal)
文件比较符:
-e filename 如果 filename存在,则为真 [ /var/log/syslog ]
-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]
filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /etc/services -nt /etc]
filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot-ot /bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 如果 string长度为零,则为真 [ -z "$myvar" ]
-n string 如果 string长度非零,则为真 [ -n "$myvar" ]
string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three"]
string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]4. 获取当前时间
ttime=`date +"%Y-%m-%d %H:%M:%S"`
5. 写日志函数
clog(){
c_time=`date +"%Y-%m-%d %H:%M:%S"`
echo "${c_time}" | tr -d '\n'
echo $*
}
需要打印日志调用时:
clog "Hello world!"
6. 返回函数的结果给变量
func(){
echo "Hello world!"
}
var=$(func) 或者 var=`func`
7. EOF的使用
8. sed
9. awk