shell脚本须知

lsb_release -a  查询当前系统 属于centos还是 ubuntu

退出码(exit status,或exit code)的约定:

0表示成功(Zero - Success)
非0表示失败(Non-Zero  - Failure)
2表示用法不当(Incorrect Usage)
127表示命令没有找到(Command Not Found)
126表示不是可执行的(Not an executable)

比较符号

-eq 等于
-ne 不等于
-gt 大于
-lt 小于
ge 大于等于
le 小于等于

if ... fi 语句;

 #!/bin/sh
    a=10
    b=20
    if [ $a == $b ]
    then
       echo "a is equal to b"
    fi
    if [ $a != $b ]
    then
       echo "a is not equal to b"
    fi

if ... else ... fi 语句;

    #!/bin/sh
    a=10
    b=20
    if [ $a == $b ]
    then
       echo "a is equal to b"
    else
       echo "a is not equal to b"
    fi

if ... elif ... else ... fi 语句。


    #!/bin/sh
    a=10
    b=20
    if [ $a == $b ]
    then
       echo "a is equal to b"
    elif [ $a -gt $b ]
    then
       echo "a is greater than b"
    elif [ $a -lt $b ]
    then
       echo "a is less than b"
    else
       echo "None of the condition met"
    fi

文件夹不存在则创建

if [ ! -d "/data/" ];then
mkdir /data
else
echo "文件夹已经存在"
fi

文件存在则删除

if [ ! -f "/data/filename" ];then
echo "文件不存在"
else
rm -f /data/filename
fi

判断文件夹是否存在

if [ -d "/data/" ];then
echo "文件夹存在"
else
echo "文件夹不存在"
fi

判断文件是否存在


if [ -f "/data/filename" ];then
echo "文件存在"
else
echo "文件不存在"
fi

文件比较符

-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
-nt 判断file1是否比file2新  [ "/data/file1" -nt "/data/file2" ]
-ot 判断file1是否比file2旧  [ "/data/file1" -ot "/data/file2" ]

linux shell 安装模块自动跳过确认

yes| XXX

yum -y install XXX

shell运行

给文件授予权限

chmod a+x install.sh   (a - all , u - user, o - other , g - group)
./install.sh

install.sh

#!/bin/sh

if [ ! -d "/usr/local/openresty/nginx/conf" ];then
    echo "开始安装环境"
else
    echo "已经存在环境,不再安装"
    sudo /usr/bin/openresty -t 
    sudo /usr/bin/openresty -s reload  
    exit 1
fi

sudo yum -y install yum-utils

if [ $? -ne 0 ]; then
    echo "yum-utils安装失败"
    exit 1
else
    echo "yum-utils安装成功"
fi

sudo yum-config-manager  --add-repo https://openresty.org/package/centos/openresty.repo

if [ $? -ne 0 ]; then
    echo "openresty添加失败"
    exit 1
else
    echo "openresty添加成功"
fi

sudo yum -y install openresty

if [ $? -ne 0 ]; then
    echo "openresty安装失败"
    exit 1
else
    echo "openresty安装成功"
fi

sudo /usr/bin/openresty

if [ $? -ne 0 ]; then
    echo "openresty启动失败"
    exit 1
else
    echo "openresty启动成功"
fi