shell指令學習
一:基本指令
1.1 變量
設置局部變量
var=10
設置環境變量
export var=10
查看環境變量
env |grep var
刪除環境變量
unset var
注:在定義變量時,不用使用‘.’
1.2 特殊字符
- 文件名代換(globbing)
用戶匹配的字符成爲通配符,如*,?,[]
*匹配0個或者多個任意字符
?匹配一個任意字符
[]
- 命令代換
定義變量
1:var=$(date)
2:var=date
echo $var----------------取值
${變量名},取變量的值
$(命令),取命令的執行結果 - 算數代換
$((變量名)),對變量執行算數運算
$[變量名]。對變量執行算數運算 - 轉義字符
另外的轉義(–)
創建 --abc文件
touch – --abc
rm – --abc
- 單引號
2shell腳本語言
- 條件測試
用test或者[ ] (需要用空格)
如果是真返回0,假的話1
var=10
test $var -gt 1
echo $? //上次結果輸出的內容
[ $var -gt 1 ]
var=‘hello’
[ $var = ‘hello’ ]
echo $?
邏輯與或
-a 與&&
-o 或
- 分支
if
read :讀取控制檯輸入的語句 - case/esac
eg:兩個“;;”代表break
- for/do/done
類似於遍歷
eg
for TEST inls
; 讀取當前執行路徑下的目錄
- while/do/done
eg
- 位置參數和特殊變量
./test.sh aa bb cc dd
$0----./test.sh
$1-----aa
$2-----bb
$#-----4
一般的啓動項爲:
hcm_servie.sh start
其中start指的argc1
- 管道
ps -ef | grep mysql | mmm
- tree
一般:將輸出的結果放在文件中
ps axu |grep bash > out
使用tree後,會在控制檯有輸出,且保存在文件中
有參數,設置爲a時,不會覆蓋之前的文件內容
ls -l | tree -a out.txt
- 文件重定向
date > out —讀到out文件中
date >>out ----追加到out文件中
kill -9 5454 >out 2&1 標準出錯輸出到文件out中
cat < fun.sh >out
- 函數
沒有返回值也沒有參數列表
函數名(){
函數體
}
下面是傳參的例子
結果:
- Shell腳本調試方法
./test.sh -n
./test.sh -v
sh -x ./test.sh
- 正則表達式
查文件、大小創建時間用find
字符類
**.**匹配任意一個字符 abc. abc2 abc3
egrep ’ [x-y]1’-------匹配