雖然我們通常將其用於管理或文件管理操作, 安慰 de Linux 擴展了其功能,超出了此目的,使我們能夠進行編程 腳本 本指南並非旨在成為Bash編程的完整參考,而是對基本命令和結構的介紹,這將使我們能夠擴展GNU / Linux系統的功能。 |
什麼是“腳本”?
基本上,我們說它是一個文件,其中包含以某種編程語言編寫的代碼,系統將其用於特定任務。 它不需要外部輸入或圖形界面,但是確實需要使處理後的數據輸出(即使用戶看不到它們)。
Bash使用的語言由其自己的解釋器定義,並且結合了其他Shell的語法,例如Korn Shell(ksh)或C Shell(csh)。 控制台中通常使用的許多命令也可以在腳本中使用,但嚴格與特定發行版有關的命令除外。
腳本的結構
首先,我們必須具有文本編輯器並希望進行編程。 只要第一行是以下內容,控制台即可執行(或解釋)我們以.sh擴展名保存的文件:
#!/斌/慶典
這告訴系統使用控制台來運行文件。 另外,#字符允許您編寫註釋。 為了創建最簡單的示例,我們再添加一行,如下圖所示:
echo命令在屏幕上顯示一條消息,在本例中為典型的“ Hello world!”。 如果我們保存它並使用控制台執行它,我們將看到結果。
基本命令
以下命令對於任何類型的程序都是通用的,並且非常有用。 我們澄清還有更多,但現在我們將介紹以下內容。
別名:允許將一串單詞替換為較短的單詞,從而減少代碼。
#創建一個名為per的別名,並使用#Downloads文件夾的別名per ='/ home / user / Downloads'#每次我們要使用它時,我們只需要調用#每個新詞#要銷毀該別名,我們每個使用unalias unalias
break:允許您立即退出for,while,直到或select循環(稍後我們將詳細研究循環)
#創建一個將從1到5分配數字的循環#在1 2 3 4 5中為計數器的每個“循環圈數”執行#我們打印變量#counter的當前值,該值由字符$分析echo“ $ counter”#如果[[count counter –eq 3]的計數器值等於3,則#break退出循環,完成fi
繼續-與break類似,除了它會忽略當前循環並轉到下一個循環。
#創建一個循環,將為循環分配1到5之間的數字#在1 2 3 4 5中為計數器的每個“循環次數”執行#如果[$ counter –eq 3]的計數器值等於3,則#繼續可防止通過跳轉到下一輪來分析#當前循環的其餘部分,即,將不打印#value 3。 繼續fi echo“ $ counter”完成
聲明:聲明變量並為其賦值,就像排版一樣(它們以相同的方式工作)。 我們可以將其與一些選項結合使用:-i聲明整數; -r用於只讀變量,其值不能更改; – A為數組或“數組”; -f用於功能; -x表示可以在腳本自身環境之外“導出”的變量。
聲明–i num = 12聲明–x pi = 3.14
help:顯示特定命令的幫助。
作業:顯示正在運行的進程。
#使用–c顯示命令的名稱,使用–p#顯示每個進程的pid(進程ID)。 作業-cp
let:計算一個算術表達式
讓a = 11讓a = a + 5#最後,我們打印a的值為16 echo“ 11 + 5 = $ a”
local:創建局部變量,最好在腳本本身的函數中使用該局部變量以避免錯誤。 您可以使用與聲明命令相同的功能。
local v1 =“這是一個局部變量”
註銷:允許完全退出Shell; 在我們使用多個外殼程序窗口的情況下非常有用,在這種情況下,exit命令將只允許一次終止一個窗口。
printf:允許您打印數據並對其進行格式化。 它有很多選擇,因此我們將列舉幾個。
#%f打印為浮點數,n用於新的#行printf“%fn” 5 5.000000#&d允許將十進制數作為參數傳遞給printf“有%d個訂單以%d美元為單位。n” 20 500有20個訂單,價值500美元。
讀取:從標準輸入(例如,用於通過鍵盤加載數據的模塊)中讀取一行。 我們可以傳遞如下選項:-t給出閱讀限制時間; -a,以便將每個單詞分配給aname數組中的一個位置; -d在行的末尾使用定界符; 其中。
echo“輸入您的名稱並按ENTER”#讀取變量名讀取名稱echo“您的名稱為$ name”
類型:描述命令及其行為。 找出每個命令的數據定義可能很有用。
type –a'['#type告訴我們[是Shell內置命令[是Shell內置#-a允許查找包含#具有書面名稱的可執行文件的目錄。 [是/ usr / bin / [
ulimit:將某些系統資源的訪問和使用限制為進程,非常適合允許進行管理更改或針對不同類型用戶的程序。 設置限制時,我們寫一個代表限制千字節的數字。
#我們看到了當前的限制ulimit –a#-f允許限制用戶無法#創建大於512000 Kb(500 #Mb)的文件ulimit –f 512000#-v限制進程的虛擬內存。 ulimit –v 512000
等待:等待某個過程或作業繼續執行。
#腳本等待pid#2585的執行
等待2585
我們可以添加到腳本中的其他有用命令由符號表示。
!!:再次運行最後一個命令
!wer:執行以表達式“ wer”開頭的最後一條命令。
'==','!=','>','<','> ='和'<=':關係運算符。
|:OR運算符通常用於連接兩個正則表達式。
:轉義命令,可用於格式化表達式。 例如:a表示聲音警報,n表示換行,b表示退格,等等。
偉大的! 無論如何,有 2 條評論:Ubuntu 標籤太多了,就像它概括了一些通用的東西一樣。 如果這些教程繼續前進,如果它們相互鏈接就好了……
除此之外,此舉很有趣!
貢獻良多! 大!
只為那些想要進一步了解此事的人缺少參考。 一些好的,雖然在我們國家不太容易找到,但
– Linux 命令、編輯器和 Shell 編程實用指南,Mark Sobell(第 8 章)
– Pro Bash 編程,Chris FA Johnson(儘管這適用於任何有其他參考文獻或有更多知識的人)。
Buenartículo。
約會好! 謝謝!
:@ log in as 函數刪除了我之前的評論,所以我會進一步總結一下:
作業-cp
bash:作業:-c:無效選項
jobs: 用法: jobs [-lnprs] [jobspec …] 或 jobs -x 命令 [args]
-eq -gt -lt 不接受小數點變量,在論壇和論壇之間我發現 bc 是一個很好的盟友:
如果[`echo 9.999> 10 | bc` -eq 1]; 然後
echo "9.999 大於 10,請確保您的處理器仍在運行"
其他
迴聲«9.999不大於10,一切正常
fi
這篇文章很好地總結了 bash 腳本的所有共性:
http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html
有關 bash 詳細信息的許多問題和解答可以在此站點上找到:
http://unix.stackexchange.com/questions/tagged/bash
這裡有一些非常有趣的腳本,嘿,你可以通過閱讀其他人的腳本來學習:
http://snipplr.com/search.php?q=bash&btnsearch=go
你說的都是對的,除了bash。 我見過的每個系統在 /bin/bash 中都有 bash。
但對於 python、perl、ruby 等,使用它就可以了。 我願意
巧合的是,在大學裡我們使用的是 bash 腳本,所以數據來自 10,非常好!
一個PDF版本下載會很好! 😀
非常好的網站。 我終於找到了有用的東西。 謝謝。