首页 > 代码库 > 自学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脚本