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...