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

    5 Comments

    1. 350fairfax nordvpn coupon
      Hi there, everything is going nicely here and
      ofcourse every one is sharing data, that’s really fine,
      keep up writing.

    2. If you wish for to obtain much from this piece of
      writing then you have to apply these methods to your won blog.

      Also visit my site nordvpn coupons inspiresensation (cfg.me)

    3. Hi Dear, are you genuinely visiting this site regularly,
      if so after that you will without doubt obtain pleasant know-how.

      Here is my webpage – nordvpn coupons inspiresensation – t.co

    4. I seriously love your site.. Pleasant colors & theme.
      Did you develop this web site yourself? Please reply back as
      I’m planning to create my own personal blog and would like to learn where you got this from or exactly what the
      theme is called. Cheers!

      Feel free to surf to my web blog … nordvpn coupons inspiresensation (ur.link)

    5. Good day! I know this is somewhat off topic but I was wondering which blog platform are you using for this website?
      I’m getting sick and tired of WordPress because I’ve had issues with hackers and I’m looking at options for another platform.
      I would be fantastic if you could point me in the direction of a good
      platform.

      my homepage; nordvpn coupons inspiresensation

    Leave a reply

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

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國