命令 正則表達式
: 命令,空命令,返回值爲 1,至關於true的別名 while : 至關於 while true shell
. 命令,用於在當前shell中執行命令 一般,一個腳本執行一條外部命令或腳本程序時,會建立一個新的環境(一個子shell),(.)命令可使腳本保持當前腳本執行,經常使用於設置當前腳本的環境變量 函數
echo 命令,默認輸出帶換行的字符串,若不須要換行,使用echo -n 但不是全部的shell都支持 this
不換行的場合,建議用printf spa
eval 命令,在變量名前加 eval, 輸出的是變量所存儲的值 命令行
exit 命令,0表示執行成功 1-125能夠被程序自定義使用, 126 文件不可執行 127 命令未找到 128及以上 出現一個信號 調試
export 命令, 將做爲它參數的變量導出到子shell中,並使之在子shell中有效。export將本身的參數建立爲一個環境變量,而這個環境變量能夠被當前腳本調用的其餘腳本和程序看見 orm
set -a 或 set -o all 命令將導出它以後聲明的全部環境變量 ip
expr 命令,將它的參數當作一個表達式來求值 文檔
printf 命令 語法 printf "format string" parameter1 parameter2 …
但格式化字符串不支持浮點數的輸出,格式化字符串中除了%和\以外,全部的字符都按照原樣輸出
return 函數返回值,無return時,默認返回最後一條命令的退出碼
set 命令,爲shell設置參數變量,能夠結合 $(…)進行參數分割 參數爲字符串(不一樣參數間按照空格區分),經過
set $(…)
echo $2 能夠取得第二個參數
set -x 讓一個腳本程序跟蹤顯示它當前執行的命令
shift(參數前移) trap(響應按鍵中斷) unset(從環境中刪除變量或函數)
find 命令,搜索文件
find [path] [option] [tests] [actions]
grep 命令,在文件中搜索字符串,通用正則表達式解釋器
grep [options] PATTERN [FILES]
(`…`)或 $(…)命令 捕獲命令的執行,若是須要捕獲一條命令的執行結果,並它用在shell腳本程序中
拓展
1.算數拓展
完成算數運算,使用$((…)) …表示要求值的表達式
2.參數拓展
處理要傳入shell或腳本的參數 進行自動化的替代字符串(p60)
here文檔
向一條命令傳遞輸入的一種特殊方法,容許一條命令在得到輸入數據時好像在讀取一個文件或鍵盤
以<<開頭 緊跟一個特殊的字符序列,改序列在文檔末尾再次出現
cat <<!FUNKY!
hello
this is a here document
!FUNKY!
輸出是
hello
this is a here document
shell調試
跟蹤錯誤的主要方法是設置各類shell選項或使用echo來 顯示變量內容
p63 表格2-21 在調用shell時加上命令行選項或使用set命令
命令行選項 |
set選項 |
說明 |
sh -n <script> |
set -o noexec set -n |
只檢查語法錯誤,不執行命令 |
sh -v <script> |
set -o verbose set -v |
在執行命令前回顯它們 |
sh -x <script> |
set -o xtrace set -x |
在處理完命令後回顯它們 |
sh -u <script> |
set -o nounset set -u |
若是使用了未定義的變量,就給出出錯消息 |