互聯網上有大量的指南介紹瞭如何使用BASH創建Shell腳本,本指南旨在給出一個稍微不同的旋轉,因為它是由一個shell腳本經驗很少的人編寫的。
現在你可能會認為這是一個愚蠢的想法,但是我發現有些指南跟你說話,就好像你已經是專家了,其他的指導者花了很長時間去追求。
雖然我的LINUX / UNIX shell腳本經驗有限,但我是一位貿易軟件開發人員,我很喜歡腳本語言,如PERL,PHP和VBScript。
本指南的要點是,你將學習,因為我學習和我拿起的任何信息,我會傳遞給你。
入門
顯然有很多理論可以直接傳遞給你,比如描述不同類型的shell以及使用BASH而不是KSH和CSH的優勢。
大多數人在學習新東西的時候都想跳進來,先從一些實際的課程開始,並且考慮到這一點,我不會對現在不重要的瑣事感到厭煩。
所有你需要遵循本指南是一個文本編輯器和運行BASH(大多數Linux發行版的默認shell)的終端。
文本編輯器
我已閱讀的其他指南建議您需要包含命令顏色編碼的文本編輯器,推薦的編輯器是VIM或EMACS 。
顏色編碼是很好的,因為它會在鍵入時突出顯示命令,但對於絕對的初學者,您可以在開始幾週內學習VIM和EMACS,而無需編寫一行代碼。
除了這兩個我更喜歡EMACS,但說實話我更喜歡使用簡單的編輯器,如nano ,gedit或leafpad。
如果您正在自己的計算機上編寫腳本,並且您知道您始終可以訪問圖形環境,那麼您可以選擇最適合您的編輯器,它可以是圖形編輯器(如GEdit),也可以是直接在終端中運行的編輯器如nano或vim。
出於本指南的目的,我將使用nano,因為它在本機上安裝在大多數Linux發行版上,因此您可能有權訪問它。
打開終端窗口
如果您正在使用帶有Linux Mint或Ubuntu等圖形桌面的Linux發行版,則可以通過按CTRL + ALT + T打開一個終端窗口。
在哪裡放置你的腳本
為了本教程的目的,您可以將腳本放在您的主文件夾下的文件夾中。
在終端窗口中,通過輸入以下命令確保您位於主文件夾中:
cd〜cd命令代表更改目錄,代字號(〜)是您的主文件夾的快捷方式。
您可以通過輸入以下命令來檢查您是否在正確的位置:
PWDpwd命令會告訴你你目前的工作目錄(你在目錄樹中的位置)。 在我的情況下,它返回/ home /加里。
現在顯然你不想將你的腳本直接放入主文件夾,所以通過輸入以下命令創建一個名為腳本的文件夾。
mkdir腳本通過輸入以下命令更改到新腳本文件夾中:
CD腳本你的第一個腳本
學習如何編程以使第一個程序簡單地輸出單詞“Hello World”是習慣性的。
從您的腳本文件夾中輸入以下命令:
nano helloworld.sh現在將下面的代碼輸入到nano窗口中。
#!/ bin / bash echo“hello world”按下CTRL + O保存文件,按CTRL + X退出nano。
腳本本身組成如下:
#!/ bin / bash需要包含在您編寫的所有腳本的頂部,因為它可以讓解釋器和操作系統知道如何處理文件。 基本上只記得把它放進去,忘記你為什麼這樣做。
第二行有一個叫做echo的單一命令,它輸出緊跟其後的文本。
請注意,如果您想要顯示多個單詞,則需要在單詞旁邊使用雙引號(“)。
您現在可以通過鍵入以下命令來運行該腳本:
sh helloworld.sh應出現“你好世界”這個詞。
運行腳本的另一種方式如下所示:
./helloworld.sh如果你在終端上直接運行該命令,你將會遇到權限錯誤。
要授予以這種方式運行腳本的權限,請鍵入以下內容:
sudo chmod + x helloworld.sh那麼究竟發生了什麼? 為什麼你能夠在不更改權限的情況下運行sh helloworld.sh,但運行./helloworld.sh會導致問題?
第一種方法加載了將helloworld.sh作為輸入的bash解釋器,併計算出如何處理它。 bash解釋器已經有權運行,只需要在腳本中運行命令。
第二種方法可讓操作系統確定如何處理腳本,因此需要一個可執行位才能執行。
上面的腳本沒問題,但是如果你想顯示引號會發生什麼?
有多種方法可以實現這一點。 例如,你可以在引號前加一個反斜杠,如下所示:
迴聲\“你好世界\”這將產生輸出“你好世界”。
等一下,如果你想顯示“你好世界”怎麼辦?
那麼你可以逃脫逃生角色
echo \\“\”hello world \\“\”這將產生輸出\“你好世界\”。
現在我知道你在想什麼。 但我真的想顯示\\“\”你好世界\“”\“
對所有這些轉義字符使用echo可能會非常愚蠢。 有一個可以使用的替代命令叫做printf。
例如:
printf'%s \ n''\\“\”hello world \\“\”'請注意,我們要顯示的文本位於單引號之間。 printf命令輸出腳本中的文本。 %s表示它將顯示一個字符串,\ n輸出一個新行。
概要
我們在第一部分中沒有涉及太多的內容,但希望您的第一個腳本能夠正常工作。
在下一部分中,我們將著眼於改善hello世界腳本以顯示不同顏色的文本,接受並處理輸入參數,變量和註釋代碼。