首页 > 代码库 > 自学shell脚本

自学shell脚本

  首先学习赵文宇的总结脚本:

1.变量

HOST=$(/bin/hostname)
将()里的命令执行后的结果赋值给HOST变量
HOST=`/bin/hostname`

将反引号里面的执行结果赋值给HOST变量

 

2.echo

echo $?   // 对上一次命令执行成功与否成功$?为0

3.if等一些需要条件判断的语句
(1)判断文件是否存在且是否为文件
[ -f file ]
判断文件是否存在且是否为可写文件
[ -w file ]
判断文件是否存在且是否为可执行文件
[ -x file ]
判断文件是否存在且是否为可读文件
[ -r file ]
判断文件是否存在且是否为目录文件
[ -d file ]
判断文件是否存在且是否为空文件
[ -s file ]
判断文件是否存在
[ -e file ]
[]和 test功能一样  -a和-o(和,或)

(2)整数值比较判断
[ -eq ]
[ "$a" = "0" ]
(( a % 2 == 0 ))

注意:(( a == 50 )) 数值的比较,在(())里用不用$都一样


[ -n string ]     //string 的长度大于0
[ -z string ]     //string 的长度为0
 string1=string2    //字符串相等
 string1!=string2    //字符串不相等
[ int1 -gt int2 ]   //int1>int2      greater than
[ int1 -ge int2 ]   //int1>=int2     greater equal
[ int1 -eq int2 ]   //int1=int2        equal
[ int1 -ne int2 ]   //int1!=int2      not equal
[ int1 -le int2 ]   //int1<=int2         less equal
[ int1 -lt int2 ]   //int1<int2       less than

(3)符串比较
[ "$a" = "$b" ]
[ -n "$a" ]和 [ "$a" ]一样 判断字符串$a是否为空
[[ "$a" == *"redhat"* ]]和[[ "$a" = *"redhat"* ]]判断-在$a中是否含有redhat字符串

(4)if后接的是命令 &&和||
if rpm -q gcc && id tom||echo "sss"  // &&如果前面的命令执行成功则执行&&后的命令否则执行||后面的命令

4.sed

sed -ri /^#ServerName.*:80$/s/^#// /etc/selinux/config  //找出/etc/seliunx/config文件中以#ServerName开头以:80结尾的行并将#替换成空白

5.

df -Th|grep "/$"|awk ‘{print $6}‘|sed ‘s/%//‘  //df后截取某个字段并替换

6.

 

自学shell脚本