Bash 基礎(chǔ)知識系列 #1:創(chuàng)建并運(yùn)行你的第一個 Bash Shell 腳本
本系列假定你對 Linux 終端比較熟悉。你不必精通,但了解基礎(chǔ)知識會很好。我建議閱讀終端基礎(chǔ)知識系列。
這個系列適合誰?
任何想開始學(xué)習(xí) Bash Shell 腳本的人。
如果你是一名將 Shell 腳本作為課程的一部分的學(xué)生,那么本系列適合你。
如果你是普通的桌面 Linux 用戶,本系列將幫助你了解在探索各種軟件和修復(fù)程序時遇到的大多數(shù) Shell 腳本。你還可以使用它來自動執(zhí)行一些常見的重復(fù)性任務(wù)。
到本 Bash 基礎(chǔ)系列結(jié)束時,你應(yīng)該能夠編寫簡單到中等水平的 Bash 腳本。
該系列的所有章節(jié)都有示例練習(xí),你可以邊做邊學(xué)。
?? 你將在這里學(xué)習(xí) Bash Shell 腳本。雖然還有語法基本相同的其他 Shell,但它們的行為在某些方面仍然存在差異。Bash 是最常見和通用的 Shell,因此學(xué)習(xí) Shell 腳本從 Bash 開始吧。
你的第一個 Shell 腳本:Hello World!
打開一個終端。現(xiàn)在 創(chuàng)建一個新目錄 來保存你將在本系列中創(chuàng)建的所有腳本:
mkdir bash_scripts
現(xiàn)在 切換到這個新創(chuàng)建的目錄:
cd bash_scripts
讓我們在這里 創(chuàng)建一個新文件:
touch hello_world.sh
現(xiàn)在,編輯該文件 并向其中添加一行 echo Hello World
。你可以使用 cat
命令的追加模式(使用 >
)執(zhí)行此操作:
[abhishek@itsfoss]:~/bash_scripts$ cat > hello_world.sh
echo Hello World
^C
我更喜歡在使用 cat
命令添加文本時添加新行。
按 Ctrl+C
或 Ctrl+D
鍵退出 cat
命令的追加模式。現(xiàn)在,如果你查看腳本 hellow_world.sh
的內(nèi)容,你應(yīng)該只看到一行。
Creating first shell script
關(guān)鍵時刻來了。你已經(jīng)創(chuàng)建了第一個 Shell 腳本。是時候 運(yùn)行 Shell 腳本 了。
這樣做:
bash hello_world.sh
echo
命令只是顯示提供給它的任何內(nèi)容。在這種情況下,Shell 腳本應(yīng)該在屏幕上輸出 “Hello World”。
Run first shell script
恭喜! 你剛剛成功運(yùn)行了第一個 Shell 腳本。多么酷啊!
以下是上述所有命令的重放,供你參考。
另一種運(yùn)行 Shell 腳本的方法
大多數(shù)時候,你將以這種方式運(yùn)行 Shell 腳本:
./hello_world.sh
這將產(chǎn)生錯誤,因為作為腳本的文件還沒有執(zhí)行權(quán)限。
bash: ./hello_world.sh: Permission denied
給腳本添加執(zhí)行權(quán)限:
chmod u+x hello-world.sh
現(xiàn)在,你可以像這樣運(yùn)行它:
./hello_world.sh
Run shell scripts
因此,你學(xué)習(xí)了兩種運(yùn)行 Shell 腳本的方法。是時候讓我們將注意力轉(zhuǎn)回 Bash 了。
把你的 Shell 腳本變成 Bash 腳本
感到困惑? 實(shí)際上,Linux 中有幾種可用的 Shell。Bash、Ksh、Csh、Zsh 等等。其中,Bash 是最受歡迎的,幾乎所有發(fā)行版都默認(rèn)安裝了它。
Shell 是一個解釋器。它接受并運(yùn)行 Linux 命令。雖然大多數(shù) Shell 的語法保持不變,但它們的行為在某些點(diǎn)上可能有所不同。例如,條件邏輯中括號的處理。
這就是為什么告訴系統(tǒng)使用哪個 Shell 來解釋腳本很重要。
當(dāng)你使用 bash hello_world.sh
時,你明確地使用了 Bash 解釋器。
但是當(dāng)你以這種方式運(yùn)行 Shell 腳本時:
./hello_world.sh
系統(tǒng)將使用你當(dāng)前使用的任何 Shell 來運(yùn)行腳本。
為避免由于不同的語法處理而導(dǎo)致不必要的意外,你應(yīng)該明確告訴系統(tǒng)它是哪個 shell 腳本。
怎么做? 使用釋伴(#!
)。通常,#
用于 Shell 腳本中的注釋。但是,如果 #!
用作程序的第一行,它的特殊用途是告訴系統(tǒng)使用哪個 Shell。
因此,更改 hello_world.sh
的內(nèi)容,使其看起來像這樣:
#!/bin/bash
echo Hello World
現(xiàn)在,你可以像往常一樣運(yùn)行 Shell 腳本,因為你知道系統(tǒng)將使用 Bash Shell 來運(yùn)行腳本。
Run bash shell script
?? 如果你覺得在終端中編輯腳本文件不方便,作為桌面 Linux 用戶,你可以使用 Gedit 或其他 GUI 文本編輯器編寫腳本并在終端中運(yùn)行。
??? 練習(xí)時間
是時候練習(xí)你學(xué)到的東西了。以下是該級別的一些基本練習(xí):
- 編寫一個打印 “Hello Everyone” 的 Bash 腳本
- 編寫一個顯示當(dāng)前工作目錄的 Bash 腳本(提示:使用
pwd
命令) - 編寫一個 Shell 腳本,使用以下列方式打印你的用戶名:“My name is XYZ”(提示:使用
$USER
)
答案可以在社區(qū)論壇的 這個專門的帖子 中討論。
最后一個練習(xí)使用 $USER
。這是一個打印用戶名的特殊變量。
這就引出了 Bash 基礎(chǔ)系列下一章的主題:變量。
請繼續(xù)關(guān)注下面的內(nèi)容。