七、bash腳本中的流程式控制制 條件判斷控制 -[]([]中的表達式是否為真) &&(前邊的結果是true的時候執行後邊的命令) ||(前邊的結果是false的時候執行後邊的命令) -if -case 迴圈控制 -while -utile -for -break -conti
七、bash腳本中的流程式控制制 條件判斷控制 -[]([]中的表達式是否為真) &&(前邊的結果是true的時候執行後邊的命令) ||(前邊的結果是false的時候執行後邊的命令) -if -case 迴圈控制 -while -utile -for -break -continue#[ abc ]#echo $?0(表示true)#[ ]#echo $?1(表示false)#["$USER" = "byf" ]('$?*'的意義是去掉特殊意義的字元,“ ”雙引號只是去掉空格的特殊意義)#echo $?1#[$USER = root ]#echo $?0#[$USER = root ] && echo hello roothello root#[-x /etc/] && echo hellohello#man bash中輸入/-w即可查找,n查找下一個#-r(讀) -w(寫) -x(可執行) -f(普通文件) -d(是否有目錄) -L (鏈接)-b(block的適配文件) -c#[-b /dev/hda ]&& echo you have a ide device#[-b /dev/sda ]&& echo you have a scsi deviceyou have a scsi device#[-f /usr/sbin/httpd] && echo please install httpt againplease install httpd again#vi b#!/bin/bashread AAAif [ $AAA = byf ]thenecho hello byfelif [ $AAA = root ] thenecho hello rootelse echo 'get out here'fiwq#./b#bash -v ./b(看執行到那個命令)#bash -vx ./b(查看出錯命令行,進行調試,可查看每個變數的值)C和bash調試的差別C是純二進位的文件,調試需要相應的開發環境設置斷點bash中是文本的文件,可直接檢測到出錯的地方##!/bin/bashread AAAcase $(取出變數的值)AAA in byf ) echo hello byf echo nice to meet you ;;(表示結束) root ) echo hello root echo i miss you so much ;; * ) echo get out here ;;esac:wq#bash ./cbyf-eq = 相同-ne !=不同-gt >-lt <-ge >=-le <=-z 為空#!/bin/bashAAA="`pgrep httpd`"[-z "$AAA"("3186 3188 3189 3190 3191 3192 3193 3194 3195"去掉變數中的空格)]&& echo httpd 'httpd is not running!' && exitfor i in $AAA do kill -9 $i doneecho httpd is killedwq#chmod a+x d#./d#./d#!/bin/bashfor aaa in 111 222 333 /etc/profile.d/*.hdo echo $aaa (chmod a+ x $aaa批量操作)done#chmod a+x e#./e111222333/etc/profile.d/colorls.sh /etc/profile.d/glib2.sh /etc/profile.d/gnome-ssh-askpass.sh /etc/profile.d/kde.sh /etc/profile.d/lang.sh /etc/profile.d/less.sh /etc/profile.d/qcd.sh /etc/profile.d/qt.sh /etc/profile.d/udisks-bash-completion.sh /etc/profile.d/vim.sh /etc/profile.d/which2.sh#seq 1 10012……100#!/bin/bashfor aaa in `seq 1 100`do echo $aaa; sleep 1(分號不加回車,不加分號加換行) (echo -n "$aaa" sleep 1)done##!/bin/bashiii=0while [ $iii -lt 100 ] do i=$[$iiii+1] echo -n "$iii " done##!/bin/bashiii=0until [$iii -gt 100] do iii=$[$iii+1] echo -n "$iii " doneunset iii:wq##!/bin/bashwhiletrue do read AAA if ["$AAA" = "ddd"] then break fidone