shell練級筆記二

2021-10-03 05:35:24 字數 3292 閱讀 3989

條件判斷式的使用

if then

只有乙個判斷式

if

[條件判斷式]

;then

....

.. //符合if條件的在這裡執行

fi //返回來寫結束if判斷之意

多個條件

放在乙個[ ]裡

[a -o b] [a -a b]

-o or

-a and

放在多個[ ]裡
[a] && [b]

[a] || [b]

&& 代表 and

|| 代表 or

read -p "please input (y/n):" ynif[

"$yn"

=="y" -o "$yn"

=="y"];

then

echo -e "ok,continue"

exit 0

fiif

["$yn"

=="n" -o "$yn"

=="n"];

then

echo -e "ok,interrupt"

exit 0

fiecho -e "i dont't know what your choices"

&&exit 0

注意:

[ ]中兩側和各個條件之間加 空格

if 需要結束符號 fi 倒寫過來

多重、複雜條件判斷

乙個條件的判斷

#乙個條件判斷,分成功與失敗進行if[

];then

....

.. 條件成立時,執行的程式

else

....

.. 條件失敗時,執行的程式

fi

多個條件的判斷
#更多條件參與判斷,分多種情況執行

if[1]

;then

....

.. 符合1,執行

elif

[2];

then

....

.. 符合2,執行

else

....

.. 1和2都不符合,執行

fi

實驗**
if

["$1"

=="hello"];

then

echo -e "hello,how are you?"

elif

["$1"

==""];

then

echo -e "you must input parameters,ex> "

else

echo -e "the only parameter is hello, ex> "

fi

利用case
#使用方式

case $變數名 in

"1")

....

..#滿足第乙個條件;;

"2")

....

..#滿足第二個條件;;

"*")

exit 1 #不滿足上述任何條件;;

esac

實驗**
case

$1in

"one"

)echo

" your choice is one";;

"two"

)echo

"your choice is two";;

"three"

)echo

"your choice is three";;

*)echo

"usage $0 ";;

esac

使用function的功能
#語法

function fname(

)

實驗**
function printit(

)# read -p "input your choice:" choice

# case $choice in

echo

"this program will print your selection !"

case

$1in

"one"

) printit;

echo$1|

tr'a-z'

'a-z';;

"two"

) printit;

echo$1|

tr'a-z'

'a-z';;

"three"

) printit;

echo$1|

tr'a-z'

'a-z';;

*)echo

"usage $0 ";;

esac

注意,

shell是自上而下,自左而右執行的,所以function的宣告必須放在最前面,否則會在呼叫的時候報找不到function的錯誤。

function的內建引數

和shell指令碼的預設引數類似

$0代表函式名,$1,$2,3⋅⋅

⋅⋅

⋅3·····

3⋅⋅⋅⋅⋅

#依次類推

使用的時候,不能和shell指令碼的預設引數混淆

實驗**
function printit(

)# read -p "input your choice:" choice

# case $choice in

echo

"this program will print your selection !"

case

$1in

"one"

) printit 1

;;"two"

) printit 2

;;"three"

) printit 3

;; *)

echo

"usage $0 ";;

esac

注意:

case 後面的 $1 指執行指令碼的時候緊跟的第乙個引數

printit 裡面的$1 指呼叫它緊跟的引數,這裡指 1 2 3

vim練級筆記一

命令模式下的操作 字元編輯x 刪除游標處字元 x 刪除游標起始處的 個字元 包含游標字元在內 xp 交換游標所在處前後的字元 轉換大小寫 j 刪除游標所在行之後的換行符 替換命令r 替換游標所在處的字元 r 切換成replace模式 又多了一種模式 替換模式 刪除命令d 刪除字元,可結合游標跳轉字元...

Shell指令碼筆記(二)Shell變數

全域性變數對於定義它的shell和其子shell都是可見的,但如果生成它的shell被終止,全域性變數也就消失了。另外全域性變數會被子shell的同名變數覆蓋。定義乙個全域性變數 export a i want break free 或者 b sunday morning export b 刪除乙個...

shell程式設計筆記(二)

終於要開始正式寫shell指令碼了 建立陣列變數的方式,直接給陣列的索引賦值 array index value注意 index是有取值範圍的 0,1023 如果乙個標量的名字和陣列名重名,那麼該標量對應的值就會變成該陣列0索引對應的值 另一種初始化陣列的方式,可以給多個元素一次性賦值 訪問方式也在...