有時需要在乙個字串變數中定義乙個命令並預先包含乙個變數名, 在使用時再轉換成變數名, 此時可通過eval命令來達到目的.
cmd='eval echo $value'
value="hello"
$cmd
# 執行echo "hello", 輸出"hello"
shell指令碼開發中, 輸出的語句盡量不出現在標準輸出, 除非是少數的步驟提示性語句, 如果是出錯資訊, 應存入到自己定義的出錯日誌中, 以便後期維護和除錯, 其它不關心的資訊直接輸出到/dev/null中. 否則輸出資訊過多, 容易耗盡快取, 造成指令碼執行卡死, 難以除錯定位.
使用[ ]判斷
注意事項
[ $home == $mall ]
常用引數
數值比較
- -ne: 比較兩個引數是否不相等
- -lt 引數1是否小於引數2
- -le 引數1是否小於等於引數2
- -gt 引數1是否大於引數2
- -ge 引數1是否大於等於引數2
- -n:判斷變數是否有值
檔案比較
- -f 檢查某檔案是否存在
- -d 檢查目錄是否存在
- -x:判斷是否存在並有可執行許可權
- -d: 檔案為目錄為真
- -c: 檔案為字元特殊檔案為真
- -b: 檔案為塊特殊檔案為真
- -s: 檔案大小非0時為真
- -t: 當檔案描述符(預設為1)指定的裝置為終端時為真
許可權比較
- -r: 使用者可讀為真
- -w: 使用者可寫為真
- -x: 使用者可執行為真
編寫簡單shell
shell英文翻譯為外殼,殼的意思 而在linux作業系統中,我們將它作為作業系統的外殼來理解。對shell工作原理的感性認識,shell在執行指令時,看似執行指令,實際是建立了shell的子程序來代替父程序shell來執行指令,此時子程序執行指令並不是shell的指令,而是乙個全新的指令。這裡就運...
編寫Shell指令碼
獲取變數的方式 1 echo path 2 echo 3 echo path 引數的提取 引數的個數 n 第n個引數 0 當前指令碼名稱 取出所有引數 shift 引數左移 執行過程 2 編寫指令碼內容 單獨講解 3 新增執行許可權 chmod a x abc.sh 4 當前目錄執行 abc.sh ...
Shell 指令碼編寫
shell 指令碼與 windows dos 下的批處理相似,也就是用各類命令預先放入到乙個檔案中,方便一次性執行的乙個程式檔案,主要是方便管理員進行設定或者管理用的。但是它比 windows 下的批處理更強大,比用其他程式設計程式編輯的程式效率更高,它使用了 linux unix 下的命令。方法一...