表 31.1. 萬用字元
*匹配0個或多個任意字元
?匹配乙個任意字元
[若干字元]
匹配方括號中任意乙個字元的一次出現
$ ls /dev/ttys*注意,globbing所匹配的檔名是由shell展開的,也就是說在引數還沒傳給程式之前已經展開了,比如上述$ ls ch0?.doc
$ ls ch0[0-2].doc
$ ls ch[012][0-9].doc
ls ch0[012].doc
命令,如果當前目錄下有ch00.doc
和ch02.doc
,則傳給ls
命令的引數實際上是這兩個檔名,而不是乙個匹配字串。
由反引號括起來的也是一條命令,shell先執行該命令,然後將輸出結果立刻代換到當前命令列中。例如定義乙個變數存放date
命令的輸出:
$ date=`date`命令代換也可以用$ echo $date
$()
表示:
$ date=$(date)
用於算術計算,$(())
中的shell變數取值將轉換成整數,例如:
$ var=45$ echo $(($var+3))
$(())
中只能用+-*/和()運算子,並且只能做整數運算。
和c語言不一樣,shell指令碼中的單引號和雙引號一樣都是字串的界定符(雙引號下一節介紹),而不是字元的界定符。單引號用於保持引號內所有字元的字面值,即使引號內的\和回車也不例外,但是字串中不能出現單引號。如果引號沒有配對就輸入回車,shell會給出續行提示符,要求使用者把引號配上對。例如:
$ echo '$shell'$shell
$ echo 'abc\(回車)
> de'(再按一次回車結束命令)
abc\
de
雙引號用於保持引號內所有字元的字面值(回車也不例外),但以下情況除外:
$ echo "$shell"/bin/bash
$ echo "`date`"
sun apr 20 11:22:06 cest 2003
$ echo "i'd say: \"go for it\""
i'd say: "go for it"
$ echo "\"(回車)
>"(再按一次回車結束命令)
"$ echo "\\"
\
shell提供了一些用於除錯指令碼的選項,如下所示:
-n讀一遍指令碼中的命令但不執行,用於檢查指令碼中的語法錯誤
-v一邊執行指令碼,一邊將執行過的指令碼命令列印到標準錯誤輸出
-x提供跟蹤執行資訊,將執行的每一條命令和結果依次列印出來
使用這些選項有三種方法,一是在命令列提供引數
$ sh -x ./script.sh二是在指令碼開頭提供引數
#! /bin/sh -x第三種方法是在指令碼中用set命令啟用或禁用引數
#! /bin/shif [ -z "$1" ]; then
set -x
echo "error: insufficient args."
exit 1
set +x
fi
set -x
和set +x
分別表示啟用和禁用-x
引數,這樣可以只對指令碼中的某一段進行跟蹤除錯。 Shell 常用語法
bin bash 選擇編譯環境 正文 i 1 echo i 1 echo i 1echo i i2.1賦值a 5 變數定義的時候必須是等號兩邊沒有空格 b 2c a b 變數賦值 7 d a b 字串 5 2 2.2從鍵盤輸入變數值echo please input a filename read ...
Shell 常用語法
賦值 file 1 兩邊不能有空格 echo file 邏輯判斷 表示式 1 if expression then fi 兩邊必須有空格 2 if expression then fi3 if expression1 o expression2 then elif expression then e...
mysql常用語法 MySQL常用語法
更新資料 update 表名 set 健名 更改的值 where 建 刪除資料 delete from 表名 where 索引 create index 索引名稱 on 表名 鍵名 建立試圖 create view 檢視名 鍵,鍵 as select matchno,abs won lost fro...