shell指令碼基礎 一

2022-08-23 20:45:11 字數 1664 閱讀 3169

什麼是shell?shell與bash之間的關係?

shell是你(使用者)和linux(核心)之前的介面程式,你在提示符下輸入的每個命令都由shell先解釋然後傳給linux核心。

shell其實就是乙個命令直譯器,擁有自己內建的shell命令集,此外也能被系統中其他有效的的linux實用程式和應用程式所呼叫。

我們通常鍵入乙個命令,shell 首先會檢查是否內部命令,不是的話再檢查是否是乙個應用程式,這裡的應用程式可以是linux本身的實用程式,也可以是商用程式。如果你鍵入的命令不是乙個內部命令並且在路徑裡沒有找到這個可執行檔案,將會顯示一條錯誤資訊,而如果被成功找到,shell內部或應用程式被 分解為系統呼叫並傳給linux核心.

bourne again shell (bash), 正如它的名字所暗示的,是 bourne shell 的擴充套件.其只是shell直譯器中的一種。

bash特徵之hash:

hash:命令快取hash,用來儲存之前執行的命令;

hash -d name 刪除快取中單條命令;

hash -r 清空快取列表;

bash變數:

本地變數:只對當前shell過程生效,對子shell子程序無效;

變數賦值:name=vlaue

變數引用:$/$var_name

檢視變數:set

清除變數:   unset +var_name

環境變數:對當前shell程序及其子程序都有效;

變數賦值:1.export name=vlaue

2.declare -x name=vlaue

檢視變數:export/declare -x/printenv/env

設定唯讀變數:將變數設定為唯讀狀態後,變數將不可修改和刪除,該操作只對當前shell生命週期生效。(readonly+var_name/declare -r var_name)

bash特徵之多命令執行

#command1;command2;command3;... 為一般多命令執行方法

採用邏輯運算方法執行多命令

邏輯運算:真(true,yes,on,1),假(false,no,off,0)

1.與運算&&(視之乘法運算)

1 && 1 =1

1 && 0 =0

0 && 1  =1

0 && 0  =0

只有當兩個命令執行結果都為真時,結果才為真

當commadn1為真,command2必須執行;而當command1為假時,command2無需執行,根據與運算法則可以提前判斷結果為假。

例如:# useradd wei && echo '123456' |passwd wei --stdin 如果新建帳號wei成功,將附加密碼

2.或運算(視之加法運算)

1 || 1 =1

1 || 0 =1

0  || 1 =1

0  || 0 =0

只有當兩個命令執行結果都為假時,結果才為假

當command1為假時,command2必須執行,反之當commadn1為真是,command2無需執行,根據或運算法則可以提前判斷結果為真

例如:# id wei || useradd wei 當帳號wei不存在的時候,將新建帳號,反之終止;

Shell 指令碼基礎學習 (一)

簡要介紹 shell基本上是乙個命令直譯器,類似於dos下的command.com。它接收使用者命令 如ls等 然後呼叫相應的應用程式。shell是作業系統最外面的一層。shell管理你與作業系統之間的互動 等待你輸入,互動式解釋和執行你輸入的命令或者自動地解釋和執行預先設定好的一連串的命令。she...

shell指令碼基礎

執行shell指令碼有兩種方法 1 作為可執行程式 將上面的 儲存為 test.sh,並 cd 到相應目錄 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼 注意,一定要寫成 test.sh,而不是 test.sh,執行其它二進位制的程式也一樣,直接寫 test.s...

shell指令碼基礎

shell定義 shell是命令解析器,將使用者的輸入的指令轉化為機器可以執行的程式。和c語言不同,指令碼有自己的語法。比較常用的格式是 bin bash或者 bin sh 如 這是乙個判斷輸入字元型別的程式 bin bash read key case in a z echo upperlette...