shell 常用語法基礎

2021-06-16 13:45:11 字數 1830 閱讀 7085

表 31.1. 萬用字元

*匹配0個或多個任意字元

?匹配乙個任意字元

[若干字元]

匹配方括號中任意乙個字元的一次出現

$ ls /dev/ttys*

$ ls ch0?.doc

$ ls ch0[0-2].doc

$ ls ch[012][0-9].doc

注意,globbing所匹配的檔名是由shell展開的,也就是說在引數還沒傳給程式之前已經展開了,比如上述ls ch0[012].doc命令,如果當前目錄下有ch00.docch02.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/sh

if [ -z "$1" ]; then

set -x

echo "error: insufficient args."

exit 1

set +x

fi

set -xset +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...