linux下常用的指令碼包括 bash 和shell
1
#!/bin/bashecho "hello bash" #display one message
將以上內容儲存為一個文字檔,名為me。副檔名任意,但常用 .sh作為副檔名。
執行命令 chmod a+x me 命令,為me 添加執行許可權。然後在Ternimal 中運行該指令碼
./mehello bash
2 擷取輸入參數
$n n為1-9自然數,代表輸入中的第n個參數
#!/bin/bashecho $1echo $2echo $3執行該指令碼,輸出為:./me i love youiloveyou
3 定義變數
指派陳述式中不能有空格,引用變數時只需變數前加上$符號即可。
為避免混淆,常常使用雙引號包含要引用的變數
#!/bin/bashA=bAll = allecho "$A"llecho All執行該指令碼,輸出為:./mebllall
4 條件判斷
if [ "$1" = "normal" ]then echo "this is normal case"elif [ -z "$1" ]then echo "no input, ignal..."fi
5 while [] ...do...donw 語句
#!/bin/bashecho "please use add or delete or exit"ACTION="default"while [ -n $ACTION ]do read ACTION case $ACTION in add) echo "add somebody" ;; delete) echo "delete somebody" ;; exit) echo "complete" break ;; *) echo "invalide action, please re-enter" ;; esacdone
6 for 迴圈
for 一般和in聯合作用,用於從某個集合中逐個取出元素並對期進行操作,如下代碼所示
#!/bin/bashfor X in 1 2 3 4 5 hellodoecho $Xdone
再舉一個
`符號是!符號左邊的鍵。
for X in `ls`doecho `basename $X`echo `dirname $X`done uname
for語句和if語句為例
功能:給目前的目錄下沒有副檔名的檔案加上 .txt副檔名
#!/bin/bash#rename files without ext name to txt file.for X in `ls`do Base="`basename $X`" if [ -z `echo $Base | grep "\."` ] then `mv $Base $Base.txt` echo $Base fidone
7函數
#!/bin/bashstrcat(){ OUT="$1"" ""$2" return 0}strcat2(){ echo "$1"" ""$2" return 3}A="bird"B="mouse"OUT=""strcat $A $Becho $OUTOUT2=`strcat2 $A $B`echo $? #//上一個命令的返回結果echo $OUT2#執行該指令碼,輸出為:./mebird mouse3bird mouse
定義函數時,不需要定義參數,直接使用$1,$2代表第n個參數
可以使用return返回整數數值,不能返回字串,不寫return 預設是0