1. linux | shell腳本-比較判斷和運算語句
在撰寫shell腳本時,經常會涉及到比較判斷與運算表達式。本篇將詳細解析這些關鍵概念。
一、shell比較判斷
1. 文件狀態判斷:使用[ -e 文件路徑 ]格式進行判斷,如[ -e /root ]判斷指定路徑是否存在。常見的判斷選項包括:
2. 整數值比較:使用[ num1 選項 num2 ]執行比較,例如[ 2 -eq 2 ]或變數比較[ $a -eq $b ]。常用選項包括:
3. 字元串比較:使用[ "string字串1" 選項 "string字串2" ],例如[ $name == "jim" ]。常用選項為:
4. 邏輯判斷:多個條件使用邏輯表達式組合。常見的邏輯運算符包括:
二、shell運算語法
1. 運算符:包括加、減、乘、除、取余、自增與自減。
2. 運算命令:
3. 變數的遞增、遞減:使用+=、-=簡化表達式。
4. 實戰例子:加減乘除計算器。
三、重定向
1. 重定向輸出:使用>>覆蓋,>>追加。
2. 重定向輸入:使用<<覆蓋,<<追加。
3. 重定向錯誤輸出:使用2>覆蓋,2>>追加。
4. 重定向輸出與錯誤輸出:使用&>覆蓋,&>>追加。
5. /dev/null:作為黑洞設備,用於丟棄數據。
四、實戰應用
1. &&和||:用於控制腳本的執行流程。
2. 檢測主機在線狀態:使用腳本進行驗證。
下期預告:shell腳本的條件判斷與循環語句。
2. 什麼是Linux的登錄shell與非登錄shell
Linux的登錄shell與非登錄shell的含義及區別:
1、含義:登錄shell,指的是當用戶登錄系統時所取的那個shell,登錄shell屬於互動式shell。
登錄shell將查找4個不同的啟動文件來處理其中的命令,用戶登錄後,在終端上輸入命令,shell立即執行用戶提交的命令,當用戶退出後,shell也終止了。
非互動式:即shell與用戶不存在交互,而是以shellscript的方式執行的,shell讀取存放在文件中的命令,並且執行它們。當它讀到文件的結尾EOF,shell也就終止了。
2、完整度不同:如果啟動了一個bash shell而沒有登入系統(如在CLI提示符中鍵入bash),則啟動了一個互動式非登錄shell。
互動式非登錄shell執行/bashrc文件中的命令,在每次執行shell腳本時,都會重新讀取這個文件,所以是最完整的。
3、使用情況不同:登錄shell的初始化文件(比如.bash_profile)通常會運行這個文件。這樣,登錄shell和非登錄shell都可以使用.bashrc中的命令。
4、登陸方式不同:登錄 shell 需要用戶名、密碼登錄後進入的 shell,或者通過--login選項生成的 shell 。
非登錄 shell 是指不需要輸入用戶名和密碼即可打開的 shell,比如輸入命令bash或者sh就能進入一個全新的非登錄 shell,在 Gnome 或 KDE 中打開一個 「terminal」 窗口,也是一個非登錄 shell。
5、數值不同:
查看$0的值,登錄shell返回-bash,而非登錄shell返回的是bash。
需要注意的是:執行exit命令,退出的shell可以是登錄或者非登錄shell;執行logout命令,則只能退出登錄shell,不能退出非登錄shell。
(2)linuxshell與或非擴展閱讀:
登陸shell通常指的是:
1、用戶通過輸入用戶名/密碼(或證書認證)後啟動的shell;
2、通過帶有-l|--login參數的bash命令啟動的shell。
例如,系統啟動、遠程登錄、使用su-切換用戶、通過bash--login命令啟動bash等。
而其他情況啟動的shell基本上就都是「非登陸shell」了。
例如,從圖形界面啟動終端、使用su切換用戶、通過bash命令啟動bash等。