\ + ENTER 換行正則表達式
shell變量無需聲明便可用,默認空值shell
於shell,變量常量無區別,用大小寫區別express
全部變量視爲字符串bash
變量賦值函數
語法:測試
cmd << tokenspa
text(單雙引號視爲普通字符)token
token文檔
cmd <<- _EOF_字符串
text(單雙引號視爲普通字符,忽略Tab字符,可用來縮進)
_EOF_
function name {
cmds
return
}
name() {
cmds
return
}
局部變量定義
local variable
if結構
#!/bin/bash
ANSWER=maybe
if [ -z 「$ANSER」 ]; then #須有「」防止參數爲空致使錯誤($被解讀爲非空)
echo 「no answer」 >&2
exit 1
fi
if [ 「$ANSER」 = 「yes」 ];then
echo 「answer is yes」
elif [ 「$ANSER」 = 「no」 ]
echo 「 answer is no」
else
echo 「answer is maybe」
fi
exit
退出狀態
echo $? 顯示上一命令退出狀態,0成功,非0失敗
#true/false 系統內置命令,以0/1退出狀態終止執行
test命令
test expression 更普遍
[ expression ] 測試命令,表達式爲true,退出狀態0。false非0;特殊符號< > ( )須引號或 \轉義
[ [ expression ] ] 支持REG,bash獨有
[ [ str=~regex ] ] string與正則表達式regex匹配爲true
[ [ str == foo.* ]] 支持模式匹配*,相似路徑名擴展
(()) 整數專用,無須擴展,名字識別變量--(( INT == 0 ))
文件測試
[ -e file ] file 存在爲true
[ -f file ] file存在且爲普通文件
[ f1 -nt f2 ] f1新於fe爲true
字符串測試
[ string ] 非空爲true
[ -n str ] str長度>0爲true
[ -z str ] 長度=0爲true
[ str1 '>' str2 ]
整數測試
[ int1 -lt int2 ] <
[ int1 -le int2 ] <=
[ int1 -ne int2 ] not =
整數regex=^-?[0-9]+$
控制運算符
# mkdir tem && cd tem
# [ -d dir ] | | mkdir dir
[ $(id –u) == 0 ]爲root