Shell 脚本开发常用命令和知识点汇总(值得收藏,用时只需要Ctrl+F)

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



猜你喜欢

转载自blog.csdn.net/maizi1045/article/details/80860249
今日推荐