if判斷數值大小
格式1:if 條件 ; then 語句; fi
腳本if1.sh
[root@lynn-04 shell]# vim if1.sh
#!/bin/bash
a=5
if [ $a -gt 3 ]
then
echo ok
fi
執行結果
[root@lynn-04 shell]# sh -x if1.sh
+ a=5
+ '[' 5 -gt 3 ']'
+ echo ok
ok
格式2:if 條件; then 語句; else 語句; fi
腳本if2.sh
[root@lynn-04 shell]# vim if2.sh
#!/bin/bash
a=2
if [ $a -gt 3 ]
then
echo ok
else
echo nook
fi
執行結果
[root@lynn-04 shell]# sh -x if2.sh
+ a=2
+ '[' 2 -gt 3 ']'
+ echo nook
nook
格式3:if …; then … ;elif …; then …; else …; fi
腳本if3.sh
[root@lynn-04 shell]# vim if3.sh
#!/bin/bash
a=6
if [ $a -gt 9 ]
then
echo ok
elif [ $a -gt 3 ]
then
echo "3<a<9"
else
echo nook
fi
執行結果
[root@lynn-04 shell]# sh -x if3.sh
+ a=6
+ '[' 6 -gt 9 ']'
+ '[' 6 -gt 3 ']'
+ echo '3<a<9'
3<a<9
可以使用 && || 結合多個條件
腳本if4.sh
[root@lynn-04 shell]# vim if4.sh
#!/bin/bash
a=6
if [ $a -lt 9 ] && [ $a -gt 3 ]
then
echo "3<a<9"
else
echo nook
fi
執行結果
[root@lynn-04 shell]# sh -x if4.sh
+ a=6
+ '[' 6 -lt 9 ']'
+ '[' 6 -gt 3 ']'
+ echo '3<a<9'
3<a<9
腳本if5.sh
[root@lynn-04 shell]# vim if5.sh
#!/bin/bash
a=2
if [ $a -gt 9 ] || [ $a -lt 3 ]
then
echo "a<3 or a>9"
else
echo nook
fi
執行結果
[root@lynn-04 shell]# sh -x if5.sh
+ a=2
+ '[' 2 -gt 9 ']'
+ '[' 2 -lt 3 ']'
+ echo 'a<3 or a>9'
a<3 or a>9
if 判斷文件、目錄屬性
[ -f file ]判斷是否是普通文件,且存在
腳本file1.sh
[root@lynn-04 shell]# vim file1.sh
#!/bin/bash
f="/tmp/file"
if [ -f $f ]
then
echo $f exist
else
touch $f
fi
執行結果
[root@lynn-04 shell]# sh -x file1.sh
+ f=/tmp/file
+ '[' -f /tmp/file ']'
+ touch /tmp/file
再次執行
[root@lynn-04 shell]# sh -x file1.sh
+ f=/tmp/file
+ '[' -f /tmp/file ']'
+ echo /tmp/file exist
/tmp/file exist
[ -d file ] 判斷是否是目錄,且存在
腳本
[root@lynn-04 shell]# vim file2.sh
#!/bin/bash
f="/tmp/file"
if [ -d $f ]
then
echo $f exist
else
touch $f
fi
執行結果
[root@lynn-04 shell]# sh -x file2.sh
+ f=/tmp/file
+ '[' -d /tmp/file ']'
+ touch /tmp/file
[ -e file ] 判斷文件或目錄是否存在
腳本
[root@lynn-04 shell]# vim file3.sh
#!/bin/bash
f="/tmp/file"
if [ -e $f ]
then
echo $f exist
else
touch $f
fi
執行結果
[root@lynn-04 shell]# sh -x file3.sh
+ f=/tmp/file
+ '[' -e /tmp/file ']'
+ echo /tmp/file exist
/tmp/file exist
[ -r file ] 判斷文件是否可讀
腳本
[root@lynn-04 shell]# vim file4.sh
#!/bin/bash
f="/tmp/file"
if [ -r $f ]
then
echo $f "可讀"
else
echo $f "不可讀"
fi
執行結果
[root@lynn-04 shell]# sh file4.sh
/tmp/file 可讀
[root@lynn-04 shell]# ls -l /tmp/file
-rw-r--r-- 1 root root 0 4月 19 13:59 /tmp/file
[ -w file ] 判斷文件是否可寫
腳本
[root@lynn-04 shell]# vim file5.sh
#!/bin/bash
f="/tmp/file"
if [ -w $f ]
then
echo $f "可寫"
else
echo $f "不可寫"
fi
執行結果
[root@lynn-04 shell]# sh file5.sh
/tmp/file 可寫
[root@lynn-04 shell]# ls -l /tmp/file
-rw-r--r-- 1 root root 0 4月 19 13:59 /tmp/file
[ -x file ] 判斷文件是否可執行
腳本
[root@lynn-04 shell]# vim file6.sh
#!/bin/bash
f="/tmp/file"
if [ -x $f ]
then
echo $f "可執行"
else
echo $f "不可執行"
fi
執行結果
[root@lynn-04 shell]# sh file6.sh
/tmp/file 不可執行
[root@lynn-04 shell]# ls -l /tmp/file
-rw-r--r-- 1 root root 0 4月 19 13:59 /tmp/file
if判斷的其他用法
if [ -z "$n" ] 這個表示當變量n的值爲空時會怎麼樣
腳本
[root@lynn-04 shell]# vim if6.sh
#!/bin/bash
n=` wc -l /tmp/test`
if [ -z "$n" ]
then
echo "n爲空"
elif [ $n -gt 99 ]
then
echo "n大於99"
else
echo "n小於99"
fi
執行結果
[root@lynn-04 shell]# sh if6.sh
wc: /tmp/test: 沒有那個文件或目錄
n爲空
if [ -n "$n" ] 表示當變量n的值不爲空
腳本
[root@lynn-04 shell]# vim if7.sh
#!/bin/bash
a='01.sh'
if [ -n "$a" ]
then
echo "01.sh不爲空"
else
echo "01.sh爲空"
fi
執行結果
[root@lynn-04 shell]# sh if7.sh
01.sh不爲空
if grep -wq '123' 1.txt; then 表示如果1.txt中含有'123'的行時會怎麼樣
[root@lynn-04 shell]# vim if8.sh
#!/bin/bash
if [ `grep -wq 'user1' /etc/passwd` ]
then
echo "user1 存在"
else
echo "user1 不存在"
fi
執行結果
[root@lynn-04 shell]# sh if8.sh
user1 不存在