格式:test [選項] file
或者 [(空格)條件判斷式(空格)] 注:不要忘記空格
選項:-d:判斷檔案是否存在,且是目錄檔案時為真
-e:判斷檔案是否存在,存在時為真
-f:判斷檔案是否為真,且為普通檔案時為真
-b:判斷檔案是否存在,且為塊裝置檔案時為真
-c:判斷檔案是否存在,且為字元裝置時為真
-p:判斷檔案是否存在,且為管道檔案時為真
-s:判斷檔案是否為非空,非空時為真
-s:判斷套接字檔案是否存在,存在時為真
例:[-e filename] 執行命令後echo $?檢視若值為0說明執行正確,檔案存在
[-e filename] && echo yes || echo no
-r:擁有讀許可權時為真
-w:擁有寫許可權時為真
-x:擁有執行許可權時為真
-u: 有suid許可權時為真
-g:有sgid許可權時為真
-k:有sbit許可權時為真
檔案1 -nt 檔案2 判斷檔案1是否比檔案2新,若新則為真
檔案1 -ot 檔案2 判斷檔案1是否比檔案2舊,若舊則為真
檔案1 -ef 檔案2 判斷檔案1inode節點號是否和檔案2相同,(可用此判斷硬鏈結)
整數1 -eq 整數2 判斷是否相等
整數1 -ne 整數2 判斷是否不相等
整數1 -gt 整數2 判斷是否大於
整數1 -ge 整數2 判斷是否大於等於
整數1 -lt 整數2 判斷是否小於
整數1 -le 整數2 判斷是否小於等於
-z 字串 判斷字串是否為空
-n 字串 判斷字串是否為非空
字串1 == 字串2 判斷是否相等
字串1 != 字串2 判斷是否不等
例:[ -z "$name"] $$ echo yes || echo no
判斷1 -a 判斷2 邏輯與,1和2都為真最終結果才為真
判斷1 -o 判斷2 邏輯或,1和2有乙個為真結果就為真
!判斷 邏輯非
if [ 條件判斷式 ];then 程式
fi或者:if [ 條件判斷式 ]
then 程式
fi例程:判斷當前使用者是root
#!/bin/bash
test=$(env | grep user | cut -d ":" -f2)
if ["$test" == "root"]
then
echo current user is root
fi
例程:判斷分割槽使用率
#!/bin/bash
test=$(df -h | grep /dev/sda5 | awk '' | cut -d "%" -f1)
if [ $test -ge 80 ]
then
echo "sda5 is full"
fi
if [ 條件判斷語句 ]
then
程式else
程式fi
例程:判斷手動輸入的是不是目錄檔案
#! /bin/bash
read -t 30 -p "please input num1:" num1
read -t 30 -p "please input num2:" num2
read -t 30 -p "please input operate:" ope
if [ -n "$num1" -a -n "$num2" -a -n "$ope" ]
then
test1=$(echo "$num1" | sed 's/[0-9]//g')
test2=$(echo "$num2" | sed 's/[0-9]//g')
if [ -z "$test1" -a -z "$test2" ]
then
if [ "$ope" == '+' ]
then
ans=$(($num1 + $num2))
elif [ "$ope" == '-' ]
then
ans=$(($num1 - $num2))
elif [ "$ope" == '*' ]
then
ans=$(($num1 * $num2))
elif [ "$ope" == '/' ]
then
ans=$(($num1 / $num2))
else
echo "error: input operate wrong"
exit 9
fielse
echo "error: input is not a num"
exit 10
fielse
echo "error: input num is null"
exit 11
fiecho "$num1" "$ope" "$num2" = $ans"
3、多分支case語句
case $變數名 in
「值1」)
若等於值1,程式
;;「值2」)
若等於值2,程式
;;*)
若都不等於,程式
;;esac
4、for迴圈
語法一:
for 變數名 in 值1 值2 值3 ... do
程式done
語法二:
for ((初始值;迴圈控制條件;變數變化)) do
程式done
例程:批量解壓縮檔案
#!/bin/bash
ls *.tar.gz > tar.log
for i in $(cat tar.log)
dotar -zxf $i &> /dev/null
done
rm -rf tar.log
例程:1加到100#!/bin/bash
s=0for ((i=1;i<=100;i=i+1))
dos=$(($s+$i))
done
echo "$s"
例程:批量新增使用者
#!/bin/bash
read -t 30 -p "please input user name" name
read -t 30 -p "please input the numbers of users" num
read -t 30 -p "please input user passwd" pass
if [ -n "$name" -a -n "$num" -a -n "$pass" ]
then
y=$( echo $num | sed 's/[0-9]'//g )
if [ -z $y ]
then
for ((i=1;i<=$num;i=i+1))
do/user/sbin/useradd $name$i $>/dev/null
echo $pass | /user/bin/passwd --stdin $name$i $>/dev/null
done
fifi
例程:批量刪除普通使用者
#!/bin/bash
for i in $(cat /etc/passwd | grep /bin/bash | grep -v root)
douserdel $i
done
5、while迴圈
語法:
while [ 條件判斷式 ] do
程式 done
6、until迴圈
語法:是在條件不成立時執行
until [ 條件判斷式 ] do
程式done
shell程式設計(五)條件判斷
這裡所說的條件判斷是對變數的大小 字串 檔案屬性等內容進行判斷。test命令可以用於字串 數字 檔案狀態等內容的測試。指的是對檔案的許可權 有無 屬性 型別等內容進行判斷。與其他語言不同的是,test命令的測試結果,返回0時表示測試成功。返回1時表示測試失敗。指的是比較兩個數值的大小或相等關係,相當...
Shell指令碼(六) 條件判斷
1 基本語法 condition 注意 condition 前後要有空格 注意 條件非空即為true,atguigu 返回true,返回false。2.常用判斷條件 1 兩個整數之間比較 字串比較 lt 小於 less than le 小於等於 less equal eq 等於 equal gt 大...
python學習筆記(五) 條件判斷
計算機之所以能做很多自動化的任務,因為它可以自己做條件判斷。比如,輸入使用者年齡,根據年齡列印不同的內容,在python程式中,用if語句實現 age 20if age 18 print your age is age print adult 根據python的縮排規則,如果if語句判斷是true,...