Linux中國

Bash Shell 腳本新手指南(一)

如標題所示,本文將涵蓋面向初學者的 Bash Shell 腳本知識。雖然本文沒有回顧 Bash 的歷史,但是有很多資源能夠便於讀者了解相關內容,讀者也可以直接訪問 https://www.gnu.org/software/bash/ 上的 GNU 項目。我們會從了解一些非常基本的概念開始,然後再將相關知識綜合起來。

創建腳本文件

首先來創建一個腳本文件。我們要確保當前目錄為家目錄。

cd ~

在主目錄中創建示例文件。文件名可以是任意名稱,本文使用 learnToScript.sh 作為文件名。

touch learnToScript.sh

此時家目錄中就生成了一個名為 learnToScript.sh 的文件。輸入以下命令以檢驗該文件是否存在,還可以注意到其許可權是 -rw-rw-r–

[zexcon@trinity ~]$ ls -l
total 7
drwxr-xr-x. 1 zexcon zexcon   90 Aug 30 13:08 Desktop
drwxr-xr-x. 1 zexcon zexcon   80 Sep 16 08:53 Documents
drwxr-xr-x. 1 zexcon zexcon 1222 Sep 16 08:53 Downloads
-rw-rw-r--. 1 zexcon zexcon   70 Sep 17 10:10 learnToScript.sh
drwxr-xr-x. 1 zexcon zexcon    0 Jul  7 16:04 Music
drwxr-xr-x. 1 zexcon zexcon  318 Sep 15 13:53 Pictures
drwxr-xr-x. 1 zexcon zexcon    0 Jul  7 16:04 Public
drwxr-xr-x. 1 zexcon zexcon    0 Jul  7 16:04 Videos
[zexcon@trinity ~]$

正式開始之前還有一件事要做。可以試一下在沒有寫入任何內容的情況下執行腳本,命令行輸入以下內容:

./learnToScript.sh
[zexcon ~]$ ./learnToScript.sh
bash: ./learnToScript.sh: Permission denied

提示許可權被拒絕,因為該文件沒有執行許可權。所以你需要更改文件的許可權才能執行腳本。如果你不熟悉許可權相關知識,建議閱讀 Paul W. Frields 寫的 Fedora 雜誌文章。

假定我們已經了解了許可權相關知識,回到終端更改 learnToScript.sh 文件,增加執行許可權。輸入以下內容:

chmod 755 learnToScript.sh
[zexcon@trinity ~]$ ls -l
total 7
drwxr-xr-x. 1 zexcon zexcon   90 Aug 30 13:08 Desktop
drwxr-xr-x. 1 zexcon zexcon   80 Sep 16 08:53 Documents
drwxr-xr-x. 1 zexcon zexcon 1222 Sep 16 08:53 Downloads
-rwxr-xr-x. 1 zexcon zexcon   70 Sep 17 10:10 learnToScript.sh
drwxr-xr-x. 1 zexcon zexcon    0 Jul  7 16:04 Music
drwxr-xr-x. 1 zexcon zexcon  318 Sep 15 13:53 Pictures
drwxr-xr-x. 1 zexcon zexcon    0 Jul  7 16:04 Public
drwxr-xr-x. 1 zexcon zexcon    0 Jul  7 16:04 Videos
[zexcon@trinity ~]$

好的,現在一切準備就緒,你已經獲得了 learnToScript.sh 命令的讀取、寫入和執行許可權 (-rwxr-xr-x)。

編輯腳本文件

下面的內容需要你熟悉 vim 或其他類似的文本編輯器,本文選用 vim。在命令提示符下輸入以下內容:

vim learnToScript.sh

這會打開一個空的文本文件,裡面有一堆波浪號。鍵盤輸入 i 將進入插入模式。通過查看終端窗口的左下角,你可以確認它處於該模式。(友情推薦,nano 編輯器也很不錯。)

接下來我們要確保文件被正確的解釋器識別。因此,輸入 #! 和 bash 的目錄 /bin/bash

#!/bin/bash

本文教程步驟的最後一件事是保存文檔。按 Esc 退出輸入模式,然後按 Shift+:。在冒號處輸入 wq,按下回車鍵,就會寫入(w)文件並退出(qvim 編輯器。

使用 vim 時要記住,要想寫入文檔,就需要輸入 i,此時你會在底部看到 –INSERT–。要保存文檔,就需要按 Esc 退出輸入模式,然後按 Shift+:,輸入 w 寫入文件;或者按 Esc,然後 Shift+: 輸入 q,實現退出而不保存;或者將 wq 連在一起,可以實現寫入並關閉文件。Esc 本身就只是退出插入模式。你可以在其 官方網站教程網站 上找到更多關於 vim 的信息。

開始正式寫腳本

echo 命令

echo 命令用於向終端返回一些信息,可以使用單引號、雙引號或不使用引號。那麼讓我們用一個傳統的 Hello World 來試試它!

#!/bin/bash

echo Hello World!
echo 'Hello World!'
echo "Hello World!"
[zexcon ~]$ ./learnToScript.sh
Hello World!
Hello World!
Hello World!
[zexcon ~]$

注意,上述三行得到了相同的結果。使用單引號、雙引號或不使用引號的結果不是一定相同的,但在這個基本腳本中確實得到了同樣的結果。在某些情況下,引號的類型不同會導致結果差異。至此恭喜你編寫了第一個 Bash 腳本。當你繼續創建更多腳本並放飛你的想法時,可能會需要了解以下更多的知識。

命令替換 $( ) 和

命令替換可以實現以下效果:獲取在命令行執行命令的結果,並將該結果寫入變數。例如,如果在命令提示符下輸入 ls,可以獲得當前工作目錄的列表。我們用這個命令來實踐一下。命令替換選項有兩個,請注意:第一個選項使用鍵盤左側 Tab 鍵上方的反引號。它與波浪號 ~ 在一個鍵位上。第二個選項使用 shell 變數。

#!/bin/bash

command1=`ls`
echo $command1

command2=$(ls)
echo $command2
[zexcon ~]$ ./learnToScript.sh
Desktop Documents Downloads learnToScript.sh Music Pictures Public snap Videos
Desktop Documents Downloads learnToScript.sh Music Pictures Public snap Videos
[zexcon ~]$

注意變數、等號和命令開頭之間不要有空格。使用這兩個選項得到的結果是完全相同的。請注意,變數需要以美元符號開頭。如果你忘記了,並且回顯了不帶美元符號的命令變數,會只輸出命令的名稱,如下所示:

#!/bin/bash

command1=`ls`
echo command1

command2=$(ls)
echo command2
[zexcon ~]$ ./learnToScript.sh
command1
command2
[zexcon ~]$

雙括弧 (())

那麼雙括弧有什麼用呢? 很簡單,雙括弧用於數學方程式。

#!/bin/bash

echo $((5+3))
echo $((5-3))
echo $((5*3))
echo $((5/3))
[zexcon ~]$ ./learnToScript.sh
8
2
15
1
[zexcon ~]$

結語

至此,我們已經創建了第一個腳本。我們知道了如何執行多個命令:將它們放在一個腳本中並運行,就可以獲得結果。下一篇文章會繼續討論,了解輸入和輸出的重定向、管道命令、使用雙括弧或者添加註釋等知識。

via: https://fedoramagazine.org/bash-shell-scripting-for-beginners-part-1/

作者:zexcon 選題:lujun9972 譯者:unigeorge 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國