1、shell指令碼學習(2)比較兩個數字大小----
2、linux 中清空或刪除大檔案內容的五種方法----
3、shell 清空檔案內容----
整數測試
字元測試
檔案測試
1、[ expression ] 命令測試
2、[[ expression ]] 關鍵字測試
3、test expression
-eq:測試兩個整數是否相等;相等為真,不等為假
-ne:測試兩個整數是否不等;不等為真,相等為假
-gt:測試乙個數是否大於另乙個數;大於為真,否則為假
-lt:測試乙個數是否小於另乙個數;小於為真,否則為假
-ge:大於或等於
-le:小於或等於
!:表示非(取反)
邏輯與:&&
邏輯或:||
cmd1 && cmd2
example:id aaa && echo "hello aaa"
如果&&前的執行結果是假,總的結果就是假,沒必要執行&&後的操作
如果cmd1成功了(真),就可執行cmd2
如果cmd1失敗了(假),就不執行cmd2
如果aaa使用者存在,則列印hello aaa;如果使用者aaa不存在,則不進行列印
cmd1 || cmd2
example:id aaa || useradd aaa
如果||前的執行結果是真,總的結果就是真,沒必要執行||後的操作cmd2
如果cmd1成功了(真),就不執行cmd2
如果cmd1失敗了(假),就可執行cmd2
如果使用者aaa存在,就不執行建立aaa使用者的命令;如果aaa使用者不存在,則建立該使用者
example:
id aaa && echo user aaa exists || useradd aaa
如果使用者aaa存在,列印user aaa exists;如果使用者不存在,則建立該使用者;&&前如果為真,則整個邏輯與為真,再與後面的命令做邏輯或;
!id aaa && useradd aaa || echo user aaa exists
取反;如果使用者不存在,則建立使用者;如果使用者存在,則列印user aaa exists;
!id bbb &>/dev/null && useradd aaa && echo 123456 | passwd --stdin bbb &>/dev/null || echo "bbb exists"
使用者不存在則建立使用者並且改密碼;使用者存在則列印bbb exists;
userid=`id -u bbb`;[ $userid -eq 0 ] && echo "admin" || echo "common"
如果bbb使用者的uid等於0,列印admin;不等於0,列印common;
if 判斷條件;then
statement1
statement2
...fiexample1:
#!/bin/bash
name=aaa
if id $name &>/dev/null;then #id $name取的是命令的執行狀態返回值;命令是否執行成功
echo "$name exists"
fi
if 判斷條件;then
statement1
statement2
...else
statement3
statement4
...fiexample2:
#!/bin/bash
name=aaa
userid=`id -u $name` #`id -u $name`取的是命令的執行結果
if [ $userid -eq 0 ];then #做等值判斷需要加"[ ]"
echo "$name is admin" #可以不新增$userid變數,寫為 [ `id -u $name` -eq 0 ]
else
echo "$name is common"
fiexample3:
#!/bin/bash
grep "bash$" /etc/passwd &>/dev/null
if [ $? -eq 0 ];then
auser=`grep "bash$" /etc/passwd | head -1 | cut -d: -f1`
echo "the user is $auser"
else
echo no such user
fi$?判斷上一條命令執行是否成功,如果成功則狀態返回值為0;當$?的狀態返回值等於0時,那麼限制乙個使用者,否則顯示沒有這樣的使用者
example4:
#!/bin/bash
username=user2
userid=`id -u $username`
groupid=`id -g $username`
if [ $userid -eq $groupid ];then
echo "good boy"
else
echo "bad boy"
fi判斷用的uid和gid是否相等,相等顯示good boy;不相等顯示bad boy
[root@localhost ~]# a=2
[root@localhost ~]# b=3
[root@localhost ~]# let c=$a+$b
[root@localhost ~]# echo $c
5
[root@localhost ~]# a=6
[root@localhost ~]# b=8
[root@localhost ~]# c=$[$a+$b]
[root@localhost ~]# echo $c
14
[root@localhost ~]# a=1
[root@localhost ~]# b=2
[root@localhost ~]# c=$(($a+$b))
[root@localhost ~]# echo $c
3
[root@localhost ~]# a=3
[root@localhost ~]# b=3
[root@localhost ~]# c=`expr $a + $b`
[root@localhost ~]# echo $c
6example:
[root@localhost ~]# timestamp=`date +%s`
[root@localhost ~]# let usedates=$timestamp/86400
[root@localhost ~]# echo $usedates
18234
分類: shell指令碼example:
#!/bin/bash
username=user10
if ! grep "$username" /etc/passwd & >/dev/null;then #if會自動判斷後面命令的狀態返回值;0為真,1——255皆為假
echo "no such $username"
exit 1
fi沒有user10使用者,列印 no such user10,並且exit退出整個指令碼,狀態返回值定義為1
shell指令碼程式設計 變數補充 if條件判斷
shell指令碼程式設計 變數補充 if條件判斷 變數的型別 字串 數值 布林型別 null shell中指定變數的型別 declaredeclare 內建命令 用來宣告和修改變數的屬性 唯讀 readonly 設定為唯讀變數 declare r a 10 不能修改包括不能刪除 設定為數值變數 de...
shell程式設計 判斷條件
shell程式設計中有兩種形式進行對判斷條件進行測試 形式一 test 形式二 舉個小例子說明其用法及其注意事項 例子 判斷檔案 new.txt 是否存在,存在現實 exist 不存在現實 not exitst test e new.txt echo exist echo not exist e n...
Shell指令碼IF條件判斷和判斷條件總結
前言 無論什麼程式語言都離不開條件判斷。shell也不例外。如下 if list then do something here elif list then do another thing here else do something else here fiex1 bin sh system u...