Bash編程-第1部分

雖然我們通常將其用於管理或文件管理操作, 安慰 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表示退格,等等。

謝謝Juan Carlos Ortiz!

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   中難度 他說:

    偉大的! 無論如何,有 2 條評論:Ubuntu 標籤太多了,就像它概括了一些通用的東西一樣。 如果這些教程繼續前進,如果它們相互鏈接就好了……
    除此之外,此舉很有趣!

  2.   讓我們使用Linux 他說:

    貢獻良多! 大!

  3.   喬瓦尼·埃斯科瓦爾·索薩 他說:

    只為那些想要進一步了解此事的人缺少參考。 一些好的,雖然在我們國家不太容易找到,但
    – Linux 命令、編輯器和 Shell 編程實用指南,Mark Sobell(第 8 章)
    – Pro Bash 編程,Chris FA Johnson(儘管這適用於任何有其他參考文獻或有更多知識的人)。

    Buenartículo。

  4.   讓我們使用Linux 他說:

    約會好! 謝謝!

  5.   帕特里西奧·多蘭特斯·詹瑪 他說:

    :@ 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

  6.   不來自布魯克林 他說:

    這篇文章很好地總結了 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

  7.   不來自布魯克林 他說:

    你說的都是對的,除了bash。 我見過的每個系統在 /bin/bash 中都有 bash。

    但對於 python、perl、ruby 等,使用它就可以了。 我願意

  8.   吉爾 他說:

    巧合的是,在大學裡我們使用的是 bash 腳本,所以數據來自 10,非常好!

  9.   亞歷克斯六世 他說:

    一個PDF版本下載會很好! 😀

  10.   馬可·安東尼奧·德·富恩特斯 他說:

    非常好的網站。 我終於找到了有用的東西。 謝謝。