Shell 指令碼學習小結 1

2021-08-02 14:44:36 字數 1390 閱讀 1973

shell 介紹

shell 就是乙個unix命令列直譯器,當使用者輸入命令並按回車鍵時,shell會解釋命令並執行相應操作。這種方式稱為互動式。

shell也可以當做高階程式語言來使用,這時,不需要在shell提示符後一次輸入乙個命令,而是將多個命令存入乙個檔案中,然後讓shell一次性執行檔案中的所有命令。這種執行命令的方式稱為批處理(batch)。

shell指令碼和程式語言很相似,也有變數和流程控制語句,包括迴圈和分支。但shell指令碼是解釋執行的,不需 要編譯。作為程式語言,它雖然不是 linux系統核心的一部分,但它呼叫了系統核心的大部分功能來執行程式、建立文件並以並行的方式協調各個程式的執行。

shell 指令碼的執行

假定有一shell指令碼檔案,commands.sh, 有三種執行指令碼的方式:

(1)通過重定向操作符(<)

sh < commands.sh

通知shell從檔案commands.sh中讀取命令

(2) 可以輸入如下命令來執行: sh commands.sh

(3) 首先使shell指令碼檔案成為可執行檔案

chmod +x commands.sh

./commands.sh

子shell

在shell指令碼執行的時候,使用者登入shell實際上是呼叫另外乙個shell程序來執行該指令碼, 例如,使用者登入shell可以是ksh、csh、tcsh或bash,但都可以使用sh執行使用者的shell指令碼。

因此,為了確保無論採用何種登入shell都可以使用sh執行指令碼,則需要在每個shell指令碼檔案中加入:

#!/bin/sh       它表示該指令碼使用後面的直譯器解釋執行。
shell 變數

(1)使用者自定義變數

shell變數不需要進行任何宣告,直接定義即可,因為shell只處理字串(對於沒有定義的變數預設是乙個空串)。定義的時候shell變數由大寫字母加下劃線組成,並且定義的時候等號兩邊不能存在空格,否則會被認為是命令!

引用shell變數要用到$符號,加{}可以防止歧義。

#!/bin/sh       它表示該指令碼使用後面的直譯器解釋執行。

#illustrate the use of positional parameters

echo

$0$1

$2$3

假定使用者輸入如下命令執行該指令碼:

./echo.args we like unix
shell 將把命令名「echo.args」儲存在引數$0中,將「we」儲存在引數$1中,「like」儲存在引數$2中,「unix」儲存在引數$3中。

shell指令碼學習小結

下面舉個例子 比如在你的電腦中有兩個目錄,乙個是aa,乙個是bb在這兩個目錄中有5個相同的檔案,但其中乙個目錄中的乙個或多個檔案剛剛修改過,現在我忘記剛才改的是那幾個檔案 了,那麼我靠梢員冉弦幌掄飭礁瞿柯嫉奈募就知道?程式如下 for file in a1 a2 a3 a4 a5 do diff a...

shell指令碼學習1

在工作的時候接觸到了shell指令碼,不過我沒有自己寫過,但是又因為當時對shell有了興趣,所以我就抽了一點時間,來學習shell指令碼的語法結構,這裡只是基本的shell語法,更高深的在以後可能會接觸。一 shell分類 1 bourne家族 sh,bash 標準shell pshell,zsh...

Shell 指令碼學習1

目錄 1.批量生成 2.批量修改 3.批量生產使用者 4.生產隨機密碼 5.批量判斷網路10.0.0.內的主機是否通訊 6.sed 命令使用 7.gawk 命令使用 8.gawk 正規表示式 9.sed 單詞替換空白行處理 10.sed 處理文字反轉指令碼 11.sed 清除html標籤 12.特殊...