1.判断语句格式
格式 : [ 条件判断 ]
注意两边都有空格
文件测试 : [ 操作符 文件或者目录 ]
操作符 作用
-d 判断是否为目录
-e 测试文件或目录是否存在
-f 判断是否为文件
-r 判是否有读权限
测试 /etc/fstab 是否为目录
[root@localhost ~]# [ -d /etc/fstab ]
[root@localhost ~]# echo $?
1
判断 /etc/cdrom 是否存在
[root@localhost ~]# [ -e /dev/cdrom ] && echo "exist"
exist
逻辑测试 :[ 表达式 1 ] 操作符 [ 表达式2 ]
操作符 作用
&& 逻辑与 ,而且
|| 逻辑或 ,或者
! 逻辑否
列如 判断当前用户是不是root
[root@localhost ~]# [ $USER == root ] &&echo " yes " || echo "no "
yes
- [ ] 数值比较 : [ 整数1 操作符 整数2 ]
操作符 作用
-eq 判断是否等于
-ne 判断是否不等于
-gt 判断是否大于
-lt 判断石头小于
-le 判断是否等于或小于
-ge 判断是否大于或等于
例如
[root@localhost ~]# [ 100 -eq 100 ] && echo 'yes'
yes
字符串比较 : [ 字符串 1 操作符 字符串2 ]
操作符 作用
= 比较字符串是否相同
!= 比较字符串是否不同
-z 判断字符串内是否为空
例如 判断string 变量是否为空值
[root@localhost ~]# [ -z $String ] && echo "yes"
yes
判断当前语系语言是否为英文 ,否则输出 “不是英语”
[root@localhost ~]# [ $LANG == "en.US" ] && echo "yes" || echo "no"
no
2.条件判断语句
if 单分支语句
判断/tmp/sxd 是否存在
#!/bin/bash
if [ -e /tmp/sxd ]
then
ehco "exist"
else
echo "no exist"
fi
~
[root@localhost tmp]# ./2
no exist
双分支 if 语句
判断 主机能否ping同 ,根据返回结分别给以提示或警告。
#!/bin/bash
ping -c 4 $1 &> /dev/null
if [ $? -eq 0 ]
then
echo "Host $1 is up "
else
echo " Host $1 is down "
fi
[root@localhost tmp]# ./3 192.168.144.11
Host 192.168.144.11 is up
if 格式
if [ 条件判断 ]
then
若符合条件内容,执行语句
elif [ 条件判断 ]
then
如符合elif 中条件,执行语句
else
若都不符合,执行语句
fi
用于给变量赋值的read命令
read -p “提示信息” 变量名
#!/bin/bash
read -p " please input your love number " sxd
if [ $sxd -gt 1 ]
then
echo "yes,your are beafultel"
else
echo "no.your too small"
fi
~
[root@localhost tmp]# ./1
please input your love number 2
yes,your are beafultel
3.循环语句
for 条件循环
for 变量名 in 变量值
do
执行命令
done
用for 写一个9 9加法表
#!/bin/bash
d="1 2 3 4 5 6 7 8 9 "
for s in $d
do
for q in $d
do
x=$[ $s + $q ]
echo " $s+$q=$x "
done
done
[root@localhost tmp]# ./2
1+1=2
1+2=3
1+3=4
1+4=5
1+5=6
1+6=7
1+7=8
1+8=9
1+9=10
2+1=3
2+2=4
2+3=5
2+4=6
2+5=7
2+6=8
2+7=9
2+8=10
2+9=11
3+1=4
3+2=5
3+3=6
...
while 循环语句
while [ 条件判断 ]
do
执行语句
done
注意 :当条件符合时 ,才执行语句,不符合时,跳出循环
例如
#!/bin/bash
read -p " please input number :" sxd
while [ $sxd -gt 10 ]
do
echo "the nubmer is $sxd"
sxd=$[ $sxd-1 ]
done
~
~
[root@localhost tmp]# ./3
please input number :15
the nubmer is 15
the nubmer is 14
the nubmer is 13
the nubmer is 12
the nubmer is 11
当条件不大于10 时跳出循环
4.case…easc 判断
case $变量名称 in
"内容一“ )
执行程序
;;
”内容二“ )
执行程序
;;
* )
执行程序
;;
esac
root@localhost tmp]# vi 5
#!/bin/bash
case $1 in
"1" )
echo "number is 1"
;;
*)
echo "please input 1"
;;
esac
[root@localhost tmp]# ./5 1
number is 1
[root@localhost tmp]# ./5 5
please input 1
这些都是脚本基本语法 ,一定要掌握