shell判斷false shell條件判斷

2021-10-12 15:27:00 字數 2035 閱讀 6896

shell 開頭以sh字尾

開頭#注釋,表明採用何種直譯器

#!/bin/bash

author:cheonghu

date:2020-05-06

desc:shell demo

abc檔案許可權

$ ll

total 4

-rw-r--r-- 1 root root 88 apr 24 22:15 demo.sh其中可以看到,demo.sh沒有可執行許可權;但是 bash demo.sh可以執行

$ ./demo.sh

-bash: ./demo.sh: permission denied

$ bash ./demo.sh

shell demo

$ chmod 755 ./demo.sh

# or

$ chmod u+x ./demo.sh # 給當前擁有者新增可執行許可權

$ ll

-rwxr--r-- 1 root root 88 apr 24 22:15 demo.sh

條件判斷

字串非空n 測試是否為非空,推薦""

$ [ -n "$test" ] && echo y || echo f

yz 測試是否為空

$ [-z $test] && echo y

字串比較

$ [ $user == root ]

# or

$ test $user == root

整數比較-gt

$ [ 1 -gt 2 ]; echo $?

# $? 檢視上一條命令結束碼;0 正確 非0,false-eq

-ne-lt

-le-ge (大於或等於)

檔案屬性判斷-e 檔案或者目錄是否存在

$ [ -e get.sh ] && echo "存在" || echo "不存在"

存在-d 判斷存在且為目錄

-f-l 軟連線 (類似快捷鍵,跨分割槽,但是刪除不可用;硬鏈結,相反;)

-p 管道

-r 讀許可權

-w 寫許可權

-x 執行許可權;root 也必須有x,才能執行

-s 非空

與 通用

數值大小比較

$ [ 5 -gt 8 ]

$ [[ 5 -lt 8 ]]字串非空比較

$ [ -z "" ] && echo y || echo n

y$ [ -n '13' ] && echo y || echo n

y檔案屬性

$ [ 9.txt -nt get.sh ] && echo y || echo n

$ [[ 9.txt -nt get.sh ]] && echo y || echo n不同

邏輯運算&&

$ [[ 5 == 9 && 5 == 4 ]] && echo y || echo n

n# 使用&&

$[ 5 == 9 && 5 == 4 ] && echo y || echo n

-bash: [: missing `]'

$[ 5 == 9 -a 5 == 4 ] && echo y || echo n

n邏輯運算||

$[[ 5 == 8 || 6 == 9 ]]

$[ 5 == 8 -o 6 == 9 ]符號使用》,<

$[[ 5 > 9 ]] - 排序比較

$[ 5 > 9 ] - 部分支援正則使用

# 僅僅是字元比較

$ test = '123'

$ [ $test == 1* ] && echo y || echo n

n# 正則比較

$ [[ $test == 1* ]] && echo y || echo n

y# a是否為數字

$ a=2

$[[ $a == [0-9] ]]&& echo y || echo n

y=~# 正則匹配,是否包含0-9

$b='a23'

$[[ $b =~ [0-9] ]]&& echo y || echo n

y

shell指令碼判斷

1.test測試命令 test命令用於檢查某個條件是否成立,它可以進行數值 字元和檔案三個方面的測試,其測試符和相應的功能分別如下 1 數值測試 eq 等於則為真 ne 不等於則為真 gt 大於則為真 ge 大於等於則為真 lt 小於則為真 le 小於等於則為真 2 字串測試 等於則為真 不相等則為...

shell 比較判斷

引用自 shell bin sh var1 20 var2 21 if var1 ne var2 then echo 1.ne means not equal true fi xyz 11 if n xyz then echo 2.n means init true must to use fi i...

shell判斷數字

用shell來判斷輸入的是否是數字。cat isnum.sh bin sh file size 128 echo please input a number for testing read n input num echo n sed n 0 9 p if n input num then ech...