您好,登錄后才能下訂單哦!
shell中有哪些循環格式?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
1.while 的格式
x=1 while ((x<=10)) ;do if [ $x == "2" -o $x == "4" ];then #條件x=2或者x=4執行下面語句 x=$[$x+1] continue #跳過本次循環 fi echo "$x" if [ $x == "8" ];then break #終止循環 fi x=$[$x+1] done #最后輸出結果為135678
2.for 循環
for i in `seq 10` ;do echo "$i" done #輸出為1-10個數,for 循環不是靠判斷來循環的是靠列表循環的,seq 10 這個函數能列出1-10的數值,這些數值就是for循環的列表 for i in `ls` ;do echo "$i" done #這個程序最后輸出為該文件夾的所有目錄及文件夾
3數組
sz=(00 11 22 33 44 55) echo "${sz[*]}" #輸出所有數值,"@"和"*"效果一樣 echo "${#sz[*]}" #輸出數值個數 echo "${sz[1]}" #顯示指標1的數值,注意默認指標從0開始計算 x=10 sz[$10]=233 echo "${sz[$10]}" #變量的使用,顯示第10指標個數值 declare -A sz #定義關聯數組,使用非數字格式的必須預先定義下 sz[yi]="111" sz[er]="222" echo "${sz[*]}" echo "${sz[er]}" 顯示結果 111 222 222
4.函數調用
hansu(){ #定義函數 echo "第$1次,函數顯示" } hansu 1 #調用函數并傳遞參數,函數內部用$1 $2使用變量,和shell用法一樣 hansu 2 hansu 3 最后顯示效果; 第1次,函數顯示 第2次,函數顯示 第3次,函數顯示
5.if的使用
if [ "a" == "a" ];then echo "條件滿足" else echo "條件不滿足" fi #正常使用,滿足條件執行第一個語句 if [ !"a" == "a" ];then echo "條件滿足" else echo "條件不滿足" fi #加個"!"號,取反值,滿足條件,就變成了不滿足了
檢測文件
if [ -e /root/123.txt ];then echo "文件存在" else echo "文件不存在" fi -e 判斷對象是否存在 -d 判斷對象是否存在,并且為目錄 -f 判斷對象是否存在,并且為常規文件 -L 判斷對象是否存在,并且為符號鏈接 -h 判斷對象是否存在,并且為軟鏈接 -s 判斷對象是否存在,并且長度不為0 -r 判斷對象是否存在,并且可讀 -w 判斷對象是否存在,并且可寫 -x 判斷對象是否存在,并且可執行 -O 判斷對象是否存在,并且屬于當前用戶 -G 判斷對象是否存在,并且屬于當前用戶組 -nt 判斷file1是否比file2新 [ "/data/file1" -nt "/data/file2" ] -ot 判斷file1是否比file2舊 [ "/data/file1" -ot "/data/file2" ]
字符運算
=: 檢測兩個字符是否相等,相等返回真 != 檢測兩個字符是否不等,不等返回真 -z 檢測字符串長度是否為0,為0返回真,全是空格返回真 $ 檢測字符是否為空,有值時時候返回真,全是空格返回假
數值比較
x=10 y=5 if [ $x -gt $y ];then #注意表達式還能這樣寫 if (( $x > $y ));then 效果也是一樣的而且更方便于記憶 echo "真" else echo "假" fi #結果返回真 -gt是左邊大于右邊,返回真 同 > -lt是小于 同 < -eq是等于 同 = -ne是不等于 同!= -ge是大于等于 同>= -le是小于等于 同<=
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。