linux shell 入門

利用vi等文本編輯器編寫Shell腳本的格式是固定的,如下:

Yourcommandsgohere

chmod+xfilename.sh

下面我們從經典的“helloworld”入手,看一看最簡單的Shell腳本的模樣。

a="helloworld"

variable_name=variable_value

就不會輸出“Hi,helloworlds”,而是輸出“Hi,”。這是因爲Shell把$as當成一個變量,而$as未被賦值,其值爲空。正確的方法是:

關於變量,還需要知道幾個與其相關的Linux命令。

!/#argumentsPrintif-lt;
<<<>files
rendot.gif\"EXAMPLE:.in*9'HTM.
1213OLD<SPANstyle=""color:#000000'">=
"NEW<SPANstyle=""color:#000000'">=

"#17command


filesfor*doif<SPANstyle=""color:#000000'">[-f"23`"<SPANstyle=""color:#000000'">$file"<SPANstyle=""color:#000000'">s/${OLD}/${NEW}/g24[-f"25"27"mv"<SPANstyle=""color:#000000'">"fi
31if…;then

fi

[$a-lt3]判斷$a的值是否小於3,同樣-gt和-le分別表示大於或小於等於

["$a"="$b"]判斷$a和$b的取值是否相等

$#表示包括$0在內的命令行參數的個數。在Shell中,腳本名稱本身是$0,剩下的依次是$0、$1、$2…、${10}、${11},等等。$*表示整個參數列表,不包括$0,也就是說不包括文件名的參數列表。

十四、十五兩句是賦值語句,分別將第一和第二參數賦值給變量OLD和NEW。緊接下來的兩句是註釋,註釋下面的兩條shift的作用是將參數列表中的第一個和第二個參數刪除,後面的參數依次變爲新的第一和第二參數,注意參數列表原本也不包括$0。

通過這個例子我們明白了ShellScript的編寫規則,但還有幾件事情需要講述一下。

pattern1)

…;;

esac

<<開始,後跟一個字符串,在here文檔結束的時候,這個字符串同樣也要出現,表示文檔結束。在本例中,here文檔被輸出給cat命令,也即將文檔內容打印在屏幕上,起到顯示幫助信息的作用。<><開始,後跟一個字符串,在here文檔結束的時候,這個字符串同樣也要出現,表示文檔結束。在本例中,here文檔被輸出給cat命令,也即將文檔內容打印在屏幕上,起到顯示幫助信息的作用。<>


do

ehco"$COPIES";;

esac

getoptsoption_stringvariable

<Pstyle=""text-indent:2em'">option_string中包含一串單字符選項,若getopts在命令行參數中發現了連字符,那麼它會將連字符之後的字符與option_string進行比較,若匹配成功,則把變量variable的值設爲該選項,若無匹配,則把變量的值設爲?。有時候,選項還會帶一個值,例如-c5等,這時要在option_string中該選項字母后面加上一個冒號,getopts發現冒號後,會讀取該值,然後將該值放入特殊變量OPTARG中。這個命令比較複雜,如有需要,讀者可以詳細參閱Shell編寫的相關資料。

selectvarin…;do

例如,下面這段程序的輸出是:

selectvarin"a""b""c";do

echo$var

1)a

第三,ShellScript中也可以使用自定義的函數,其語法形式如下:

第四,我們也可以在Shell下調試ShellScript腳本,當然最簡單的方法就是用echo輸出查看變量取值了。Bash也提供了真正的調試方法,就是執行腳本的時候用-x參數。

<Pstyle=""text-indent:2em'">sh?xfilename.sh<Pstyle=""text-indent:2em'">這會執行腳本並顯示腳本中所有變量的取值,也可以使用參數-n,它並不執行腳本,只是返回所有的語法錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章