逻辑连接符
&&:与连接,第一个成功了,第二个才执行
||:或连接,第一个失败了,第二个才执行
;:无连接关系
cd /fuyun && ll #第一条命令执行成功才执行第二条命令
-bash: cd: /fuyun: No such file or directory
cd ../ && ll #第一条命令执行失败则不执行第二条命令
total 12
drwxr-xr-x 2 fuyun fuyun 4096 Mar 22 16:35 data
drwxr-xr-x 2 fuyun fuyun 4096 Mar 19 17:00 logs
drwxr-xr-x 2 fuyun fuyun 4096 Mar 24 13:49 shell
pwd || ll #第一条命令执行成分,则不执行第二条命令
/home/fuyun
cd /fuyun || ll #第一条命令执行失败,则执行第二条命令
-bash: cd: /fuyun: No such file or directory
total 12
drwxr-xr-x 2 fuyun fuyun 4096 Mar 22 16:35 data
drwxr-xr-x 2 fuyun fuyun 4096 Mar 19 17:00 logs
drwxr-xr-x 2 fuyun fuyun 4096 Mar 24 13:49 shell
pwd ; ll #无连接关系,所有命令都会执行
/home/fuyun
total 12
drwxr-xr-x 2 fuyun fuyun 4096 Mar 22 16:35 data
drwxr-xr-x 2 fuyun fuyun 4096 Mar 19 17:00 logs
drwxr-xr-x 2 fuyun fuyun 4096 Mar 24 13:49 shell
cd /fuyun ; ll
-bash: cd: /fuyun: No such file or directory
total 12
drwxr-xr-x 2 fuyun fuyun 4096 Mar 22 16:35 data
drwxr-xr-x 2 fuyun fuyun 4096 Mar 19 17:00 logs
drwxr-xr-x 2 fuyun fuyun 4096 Mar 24 13:49 shell
内置判断
字符串
[ $a = $b ]
[ $a = $b ];echo $?
[ $a > $b ];echo $?
[ $a < $b ];echo $?
[ $a != $b ];echo $?
-z:判断变量是否为空,空返回true,非空返回false
-n:判断变量是否不为空,不为空返回true
#!/bin/bash
str1='stringOne'
str2='stringTWO'
int1=12
int2=36
#字符串判断
if [ $str1 = $str2 ]; then #注意[ ]里面的空格
echo "$str1 = $str2"
elif [ $str1 \< $str2 ]; then
echo "$str1 < $str2"
else
echo "$str1 > $str2"
fi
#判断变量是否为空
if [ -z $1 ]; then #-z:判断变量是否为空,空返回true,非空返回false
echo "没有输入参数1"
elif [ -n $1 ]; then #-n:判断变量是否不为空,不为空返回true
echo "参数1为:$1"
fi
数值判断
[]:
-eq:等于
-ne:不等于
-gt:大于
-ge:大于等于
-lt:小于
-le:小于等于
[ $a -eq $b ]; echo $?
(()):高级语言
(($a==$b))
!= >= <= < >
#!/bin/bash
#数值判断
if [ $int1 -eq $int2 ]; then
echo "$int1 = $int2"
elif [ $int1 -lt $int2 ]; then
echo "$int1 <= $int2"
else
echo "$int1 >= $int2"
fi
#数值高级写法
if (($int1==$int2)); then #注意不能有空格
echo "$int1 = $int2"
elif (($int1<=$int2)); then
echo "$int1 <= $int2"
else
echo "$int1 >= $int2"
fi
文件和目录判断
-f:判断是否是一个文件
[ -f /etc ];echo $?
-d:判断是否是一个目录
-e:判断是否存在
-w:判断是否有可写权限
-r:判断是否有可读权限
-x:判断是否有可执行权限
#!/bin/bash
#文件判断
if [ -f /etc ]; then
echo "是文件"
else
echo "不是文件"
fi
#目录判断
if [ -d /etc ]; then
echo "是目录"
else
echo "不是目录"
fi
#判断文件或目录是否存在
if [ -e /etc ]; then
echo 文件或目录存在
else
echo 文件或目录不存在
fi
#判断文件或目录是否有写、读、执行权限
if [ -w /etc ];then
echo 文件或目录有写的权限
else
echo 文件或目录没有写的权限
fi
if [ -r /etc ];then
echo 文件或目录有读的权限
else
echo 文件或目录没有读的权限
fi
if [ -x /etc ]; then
echo 文件或目录有执行的权限
else
echo 文件或目录没有执行的权限
fi
数值运算
$((a+b))/$(($a+$b))
$[ $a + $b ]