shell指令碼 流控制

2021-07-24 14:45:21 字數 3657 閱讀 8687

#語法結構

#如果if條件判斷中有多條命令,則根據最後一條命令的執行結果進行評估

ifcommand;then

command

elif command;then

command

else

command

fi

#!/bin/bash

x=5if [ $x = 5 ];then

echo

"x equals 5"

else

echo

"x not equals 5"

fi

每個命令執行完成後,會向作業系統傳送乙個值,表示退出狀態,可以使用以下方法,檢視該值

#0表示執行成功,其他值表示失敗

echo $?

語法結構

(一)test expression

(二)[ expression ]

-d file   檔案存在,並且是乙個目錄檔案

-e file file檔案存在

-f file file問價存在,並是乙個普通檔案

-r file 問價存在,並且可讀

-w file 檔案存在,並且可寫

-x file 檔案存在,並且可執行

#!/bin/sh

file="/usr/study/test/test.t"

if [ -e

$file ];then

if [ -f

$file ] ;then

echo

"$file is a regular file"

fiif [ -d

$file ];then

echo

"$file if a directory"

fiif [ -r $file ];then

echo

"$file is a readable"

fiif [ -w $file ];then

echo

"$file is a writeable"

fiif [ -x $file ];then

echo

"$file is a executable"

fielse

echo

"$file does not exit"

exit1fi

exit

#exit命令接受單獨的可選引數,來作為指令碼的退出狀態

">"和"<"在使用是必須使用引號引起來,或者使用反斜槓進行轉義

"="和"=="在判斷字串相等是作用相同

-nstring 表示字串長度大於0

-zstring 表示字串長度等於0

#!/bin/bash

result=xul

if [ -z $result ];then

echo

"there is no answer"

exit1fi

if [ "$result" = "xul" ];then

echo

"result is xul"

fiif [ "$result" != "test" ];then

echo

"result is not test"

fiif [ "$result" \> "yyy" ];then

echo

"result > yyy"

fiif [ "$result" \< "yyy" ];then

echo

"result < yyy"

fi

-eq     連個整數相等

-ne 兩個整數不相等

-le 小於等於

-lt 小於

-ge 大於等於

-gt 大於

#!/bin/bash

i=4if [ -z "$i" ];then

echo

"i is empty"

exit1fi

if [ $i

-eq0 ];then

echo

"i is 0"

else

if [ $i -le 0 ];then

echo

"i <= 0"

fiif [ $i -ge 0 ];then

echo

"i >= 0"

fiif [ $i

-ne0 ];then

echo

"i != 0"

fiif [ $((i%2)) -eq

0 ];then

echo

"i is even"

fifi

exit

[[ espression ]]

1.增加了對正規表示式的支援

2.==操作符支援模式匹配

(())

算數測試,使用變數是不需要擴充套件操作,該表示式可以根據變數名直接查詢變數

#!/bin/bash

i=5if [[ "$i" =~ ^-?[0-9]+$ ]];then

if [ $i

-eq0 ];then

echo

"$i is 0"

else

if [ $i

-lt0 ];then

echo

"$i< 0"

else

echo

"$i > o"

fiif [ $((i%2)) == 0 ];then

echo

"$i is even"

else

echo

"$i is not even"

fifi

else

echo

"$i is not a integer"

fi

&&     ||      !
#!/bin/bash

i=50

max=100

min=1

if [[ "$i" =~ ^-?[0-9]+$ ]];then

if [[ i -ge min && i -le max ]];then

echo

"$i is within $min to $max"

else

echo

"$i is out of range"

fielse

echo

"$i is not a integer"

fi

command1&&command2

//只有command1執行成功後才執行command2

command1||command2

//只有command1執行失敗後才執行command2

mkdir test && cd test

Shell指令碼程式設計 流控制(一)

在指令碼中有兩種強大的流控制機制可以使用 if語句 case語句 1 if語句 基本語法 if list1 then list2 elif list3 then list4 else list5 fi乙個例項 if uuencode koala.gif koala.gif koala.uu then...

shell指令碼中的控制流結構

控制結構包括 流控制和迴圈 流控制 if then else,測試結果或者為真 0 或者為假 1 迴圈 for until while 一 if then else 語句 格式 if 條件1 then命令1 elif條件2 then 命令2 else 命令3 fi 簡單的格式 if 條件 then ...

Shell程式設計 流控制

if語句 1 寫if語句時不要隨意加空格,比如if 1 2 這是假,而if 1 2 就是真了,因為1和 之間有空格。注意與1,2之間的空格是合法的,總結一下就是,shell中表示式中最好不要加空格,比如a 1,1 2,2 2等等,如果加上空格,往往會產生錯誤。2 使用test,格式 if test ...