如何編寫簡單的Shell腳本(Script)文件之Linux的基本操作
新建一個文本文件包含所需要的腳本。舉例,我會使用pico編輯器寫一個腳本用來運行程序tar,帶上必要的可選項可以用來解壓從因特網下載下來的*.tar的文件(我好像總是記不住tar的所有參賽)。滑動軸承?我決定把我的腳本名稱叫做“untar”:
pico untar
因為在我的當前工作目錄里untar文件不存在,所有pico文本編輯器自動創建這個文件,現在,我輸入以下內容:
#!/bin/bash
echo this is the script file $0
echo untarring the file $1
# this calls tar with options -xvzf (extract,
# verbose, filter through gzip, input filename)
tar -xvzf $1
我使用O保存這個文件,然后X退出。
腳本的第一行,以“#!”開始是特別的提示-它告訴shell應該用哪一個程序來解釋我的腳本。在這個例子里,我使用bash shell /bin/bash。第一行必須使用“#!”開頭,否則腳本不會運行(系統認為是一個文本文件)。水泥煙囪新建?其他以“#”開始的行是注釋行只是給作者和讀者使用的,計算機將跳過這些行。
在以上腳本里,參數$0, $1, $2…是傳遞到腳本里面的參數。舉個例子,如果我運行我的腳本名“myscript”帶七個參數如下:
myscript a b c d e f g
那么,參賽$0就是myscript, $1就是a, $2就是b,$3就是c,依此類推。
腳本的第二行和第三行,echo命令輸出所有在它后面同一行上的文本,然后擴展在腳本里對應的參數$0和$1。第四行和第五行是我寫的注釋文本,提醒我在這個腳本里要做的事情。只有最后一行是真正起作用的。
一旦腳本已經寫好,我把文件屬性改成對文件擁有者是“可執行”的:
chmod u+x untar
然后我的腳本就可以這樣運行了:
./untar my_tar.tar.gz
Liunx腳本的確非常豐富,靈活,功能強勁,還可能有點復雜。然而,對于日常任務編寫一些簡單腳本,它并不需要什么特別高深的知識。你可以把一些要用到的命令放在一起,一個接一個,輸入到文件里。活動隔斷?我使用腳本很頻繁是因為我太懶了,不想一次一次的輸入相同的命令。
一個最簡單的方法,可以把一組命令放在文本文件里然后使用source命令傳遞給shell讓它直接運行:
source my_file
這個時候就不需要在文本第一行加上“#!”的標志了。
3.4.6 引號的含義
一般來說,以下字符對于shell有特殊的含義:
\ ' " ` < > [ ] ? | ; # $ ^ & * ( ) =
這里有四種不同的符號:反斜杠(\),單引號(‘),雙引號(“),反向單引號(`)。
反斜杠(\)表示:關閉后面字符的特殊含義
單引號(‘)表示:關閉在兩個單引號之間所有字符的特殊含義
雙引號(“)表示:關閉在兩個雙引號之間所有字符的特殊含義除了$ ` \
反向單引號(`)表示:告訴shell首先運行兩個反向單引號之間的命令,生物醇油?然后把得到的結果再傳遞給兩個單引號之外的命令。同樣的功能也可以通過“$command”命令來實現,而且可能會更方便。
舉個例子,我可以創建一個奇怪的目錄名叫做“*”通過使用“\”或者“’”符號:
mkdir \*
mkdir ’*’
這屏蔽了“*”對于shell的特別含義。如果沒有“\”,“*”意味著當前目錄下所有文件。