91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell腳本相關問題有哪些

發布時間:2021-10-21 14:10:53 來源:億速云 閱讀:151 作者:小新 欄目:編程語言

這篇文章主要介紹了shell腳本相關問題有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

shell:解釋執行用戶輸入命令,逐行解釋,也可以批處理很多指令,可將這些指令全部編寫到一個腳本文件中,讓shell一次執行多條命令,常用的shell(bash,它承擔shell這個角色,為shell腳本解釋器,為一個可執行的二進制文件)

shell的執行過程:

用戶在命令行輸入命令后,一般情況下Shell會fork子進程并調用exec進行程序替換,讓它的孫進程執行該命令,但是Shell的內建命令例外,執行內建命令相當于調用Shell進程中的一個函數,并不創建新的進程。如cd、export、umask、exit等命令即是內建命令

具體步驟:

1.交互Shell(bash)fork/exec一個子Shell(sh)用于執行腳本,父進程bash等待子進程sh終止。

2.sh讀取腳本中的cd ..命令,調用相應的函數執行內建命令,改變當前工作目錄為上一級目錄。

3.sh讀取腳本中的ls命令,fork/exec這個程序,列出當前工作目錄下的文件,sh等待ls終止。

4.ls終止后,sh繼續執行,讀到腳本文件末尾,sh終止。

5.sh終止后,bash繼續執行,打印提示符等待用戶輸入。

eval:是在終端上鍵入的一條普通命令行。然而當在它前面放上eval時,其結果是shell在執行命令行之前掃描它兩次

用法:eval [參數]    eval可讀取一連串的參數,然后再依參數本身的特性來執行。
參數:參數行之前掃描它兩次,再次運算求出參數的內容。

1.用于回顯簡單變量:

shell腳本相關問題有哪些

2.兩次掃描,用于復雜變量顯示,新建一個文本文件,顯示該文本文件內容

shell腳本相關問題有哪些

3.可獲取最后一個參數

shell腳本相關問題有哪些

4.用eval創建指針變量,也可以改變該指針所指空間的內容

shell腳本相關問題有哪些

eval:不能獲得函數處理結果 ,所有命令,函數的處理結果只能通過 ``來獲得。eval 嵌套無意義 ,在其他語言中可以通過 eval(eval("code")),來執行(執行動態生成的code的返回),而由于shell 中 eval 將后面的eval命令簡單當作命令字符串執行,失去了嵌套作用,嵌套被命令替換取代。

` `與$()的區別與聯系

1.在有些情況下它們的用法相同,但它們之間也有區別

shell腳本相關問題有哪些

如上例,顯示當前時間時它們所獲得的值是一樣的,但獲得當前目錄所在主目錄時,``將$的特殊意義轉換出來了,而使用$()時并未解釋出來,被\轉義成了一個普通字符

2.若給上例再加上一個/

shell腳本相關問題有哪些

$()被轉義成了一個字符串,并內解釋出內容

3.在test.sh腳本中編寫如下內容

shell腳本相關問題有哪些

如上,用反引號時,四個反斜杠被解釋成了一個,而用$()時被解釋成了兩個

4.使用多個反斜杠時

shell腳本相關問題有哪些

由上可得:反引號本身就對\進行了轉義,保留了其本身意思,如果想在反引號中起到\的特殊意義,必須使用兩個\表示,$()使用時與平時一樣 \=\

[測試命令與[[]]的區別與聯系

1.[是一個可執行程序

shell腳本相關問題有哪些

2.單括號TEST命令要對變量進行單詞分離,當變量值包含空白符時,要用引號將變量括起來;而雙括號的TEST命令不會對變量進行單詞分離

當要測試時,bash回應參數太多了,是因為單引號TEST命令對變量進行單詞分離了,結果也就變成了

[ hello world = "hello world" ],多了那個字符串hello,成了字符串world和字符串hello world之間的比較了。因此如果在單括號的TEST命令的變量含有空格,但它還得和字符串比較,那就必須給變量加個雙引號了,這時它就不會發生錯誤了。而在下面的雙括號的TEST命令不能對變量單詞進行分離

shell腳本相關問題有哪些

3.單括號的TEST命令不對SHELL元字符進行擴展的,而雙括號TEST命令則會對SHELL元字符進行擴展的了。

4.在雙括號的TEST命令中,如果一個字符串(不管含不含有空格)僅僅是在表達式作為一個普通字符串,而不是一個模式的一部分,則它也必須用引號括起來。如果一個字符串值(右邊那個的了)不加雙引號,那這個字符串就是模式來的,如果它里面有含有SHELL元字符,BASH會對它進行擴展。如果字符串加了雙引號,那它就是一個很普通的字符串的,即便字符串里面里面含有特殊字符,也就是當普通內容來處理。

5.[ express1 –a express2 ] 這是放在單括號的TEST命令的,因為單的不支持元字符擴展,因此就只能叫做表達式了,它們可以組合構成邏輯測試的

感謝你能夠認真閱讀完這篇文章,希望小編分享的“shell腳本相關問題有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

诏安县| 伊宁市| 长白| 盖州市| 安宁市| 新闻| 林州市| 武冈市| 兴安盟| 南郑县| 娄底市| 定襄县| 梅州市| 三河市| 贵州省| 高邑县| 孟津县| 且末县| 沾化县| 麦盖提县| 陈巴尔虎旗| 如皋市| 特克斯县| 金湖县| 扶绥县| 漳浦县| 铁岭市| 仲巴县| 天峨县| 原阳县| 新宾| 武鸣县| 邳州市| 长子县| 吴桥县| 五家渠市| 海口市| 安新县| 沅陵县| 门源| 宜兴市|