shell脚本逻辑判断,文件目录属性判断,if,case用法
生活随笔
收集整理的這篇文章主要介紹了
shell脚本逻辑判断,文件目录属性判断,if,case用法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
shell腳本中的邏輯判斷
1.if then fi
[root@weixing01 shell]# cat if1.sh #!/bin/bash a=5 if [ $a -gt 3 ] thenecho ok fi2.if then else fi:
root@weixing01 shell]# sh -x if2.sh + a=1 + '[' 1 -gt 3 ']' + echo nook nook [root@weixing01 shell]# cat if2.sh #!/bin/bash a=1 if [ $a -gt 3 ] thenecho ok elseecho nook fi3.if then elif then else fi:
[root@weixing01 shell]# cat if3.sh #!/bin/bash a=4 if [ $a -gt 4 ] thenecho ">1" elif [ $a -lt 4 ] thenecho "<4" elseecho "=4" fi [root@weixing01 shell]# sh -x if3.sh + a=3 + '[' 3 -gt 4 ']' + '[' 3 -lt 4 ']' + echo '<4' <4 [root@weixing01 shell]# vi if3.sh [root@weixing01 shell]# sh -x if3.sh + a=4 + '[' 4 -gt 4 ']' + '[' 4 -lt 4 ']' + echo =4 =4 [root@weixing01 shell]# cat if3.sh #!/bin/bash a=44.注意【】兩側(cè)都需要有空格,-gt 大于 -lt 小于 -eq等于 兩側(cè)都需要空格 -ge大于等于 -le小于等于 noeq 不等于
5.if邏輯判斷支持||和&&
文件目錄屬性判斷
1.-f file 判斷是否是普通文件,且存在
[root@weixing01 shell]# sh -x file1.sh + f=/tmp/aminglinux + '[' -f /tmp/aminglinux ']' + touch /tmp/aminglinux [root@weixing01 shell]# cat file1.sh #!/bin/bash f="/tmp/aminglinux" if [ -f $f ] then echo $f exist elsetouch $f fi [root@weixing01 shell]# sh -x file1.sh + f=/tmp/aminglinux + '[' -f /tmp/aminglinux ']' + echo /tmp/aminglinux exist /tmp/aminglinux exist2.-d file 判斷是否是目錄且存在:
[root@weixing01 shell]# sh -x file2.sh + f=/tmp/aminglinux + '[' -d /tmp/aminglinux ']' + touch /tmp/aminglinux [root@weixing01 shell]# cat file2.sh #!/bin/bash f="/tmp/aminglinux" if [ -d $f ] then echo $d exist elsetouch $f fi3.-e判斷文件或者目錄是否存在:
[root@weixing01 shell]# vi file2.sh [root@weixing01 shell]# sh -x file2.sh + f=/tmp/aminglinux + '[' -e /tmp/aminglinux ']' + echo exist exist4.-r判斷文件是否可讀
[root@weixing01 shell]# sh -x file2.sh + f=/tmp/aminglinux + '[' -r /tmp/aminglinux ']' + echo /tmp/aminglinux readable /tmp/aminglinux readable [root@weixing01 shell]# cat file2.sh #!/bin/bash f="/tmp/aminglinux" if [ -r $f ] then echo $f readable fi5.-w判斷文件是否可寫
[root@weixing01 shell]# cat file2.sh #!/bin/bash f="/tmp/aminglinux" if [ -w $f ] then echo $f writeable fi [root@weixing01 shell]# sh -x file2.sh + f=/tmp/aminglinux + '[' -w /tmp/aminglinux ']' + echo /tmp/aminglinux writeable /tmp/aminglinux writeable6.-x判斷是否可執(zhí)行:不可執(zhí)行,沒有輸出
[root@weixing01 shell]# ls -l /tmp/aminglinux -rw-r--r-- 1 root root 0 4月 18 21:36 /tmp/aminglinux [root@weixing01 shell]# vi file2.sh [root@weixing01 shell]# cat file2.sh #!/bin/bash f="/tmp/aminglinux" if [ -x $f ] then echo $f exeable fi [root@weixing01 shell]# sh -x file2.sh + f=/tmp/aminglinux + '[' -x /tmp/aminglinux ']'if特殊用法
1.判斷變量是否為空:
++ wc -l /tmp/lalal wc: /tmp/lalal: 沒有那個(gè)文件或目錄 + n= + '[' -gt 100 ']' if4.sh: 第 3 行:[: -gt: 期待一元表達(dá)式 [root@weixing01 shell]# vi if4.sh [root@weixing01 shell]# sh -x if4.sh ++ wc -l /tmp/lalal wc: /tmp/lalal: 沒有那個(gè)文件或目錄 + n= + '[' -z '' ']' + echo error error [root@weixing01 shell]# cat if4.sh #!/bin/bash n=`wc -l /tmp/lalal` if [ -z "$n" ] thenecho error elif [ $n -gt 100 ] then echo aldkjglka fi2.-n判斷是否不為空:
[root@weixing01 shell]# ls 01.sh file1.sh file2.sh if1.sh if2.sh if3.sh if4.sh [root@weixing01 shell]# if [ -n 01.sh ]; then echo ok; fi ok3.-q 文件中含有字符時(shí)會怎樣:
[root@weixing01 shell]# if grep -wq 'weixing01' /etc/passwd; then echo "sdjfk"; fi sdjfkcase判斷
1.編寫腳本:
[root@weixing01 shell]# cat case1.sh #!/bin/bash read -p "Please input a number: " n if [ -z "$n" ] thenecho "Please input a number."exit 1 fin1=`echo $n|sed 's/[0-9]//g'` if [ -n "$n1" ] thenecho "Please input a number."exit 1 fiif [ $n -lt 60 ] && [ $n -ge 0 ] thentag=1 elif [ $n -ge 60 ] && [ $n -lt 80 ] thentag=2 elif [ $n -ge 80 ] && [ $n -lt 90 ] thentag=3 elif [ $n -ge 90 ] && [ $n -le 100 ] thentag=4 else tag=0 fi case $tag in1)echo "not ok";;2)echo "ok";;3)echo "ook";;4)echo "oook";;*)echo "The number range is 0-100.";; esac [root@weixing01 shell]# sh -x case1.sh + read -p 'Please input a number: ' n Please input a number: 101 + '[' -z 101 ']' ++ echo 101 ++ sed 's/[0-9]//g' + n1= + '[' -n '' ']' + '[' 101 -lt 60 ']' + '[' 101 -ge 60 ']' + '[' 101 -lt 80 ']' + '[' 101 -ge 80 ']' + '[' 101 -lt 90 ']' + '[' 101 -ge 90 ']' + '[' 101 -le 100 ']' + tag=0 + case $tag in + echo 'The number range is 0-100.' The number range is 0-100. [root@weixing01 shell]# sh -x case1.sh + read -p 'Please input a number: ' n Please input a number: 78 + '[' -z 78 ']' ++ echo 78 ++ sed 's/[0-9]//g' + n1= + '[' -n '' ']' + '[' 78 -lt 60 ']' + '[' 78 -ge 60 ']' + '[' 78 -lt 80 ']' + tag=2 + case $tag in + echo ok ok轉(zhuǎn)載于:https://blog.51cto.com/13517254/2105139
總結(jié)
以上是生活随笔為你收集整理的shell脚本逻辑判断,文件目录属性判断,if,case用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7 ArcMap能复制,不能粘贴
- 下一篇: Jquery 添听checkbox 是否