shell編程--if語句

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 不存在
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章