Shell腳本
- 用途:完成特定的、較複雜的系統管理任務。
- 格式:集中保存多條Linux命令,普通文本文件
- 執行方式:按照預設的順序依次執行的命令
執行Shell腳本的方式:
1.bash test.sh
//不需要寫解析器
//不需要給腳本設置執行權限
- ./test.sh
//需要寫解析器——腳本首行
#!/bin/bash
//需要給腳本設置執行權限
chmod a+x test.sh
寫個Shell的小例子
test.sh:
#!/bin/bash
echo '23123123'
echo 'disk space:'
echo
df -Th
echo
echo 'free space:'
free -m
小例子:每週五17:30 清理FTP服務器的公共共享目錄
檢查/var/ftp/pub/ 目錄,將其中所有子目錄及文件的詳細列表、當時的時間信息追加保存到/var/log/pubdir.log日誌文件中,然後清空該目錄
示例:
vi /opt/ftpclean.sh
`#!/bin/bash
date >> /var/log/pubdir.log
ls -lhR /var/ftp/pub >> /var/log/pubdir.lg
rm -rf /var/ftp/pub/*
crontab -e
30 17 * * 5 /opt/ftpclean.sh`
Shell變量種類
- 用戶自定義變量 name="user1" 引用:${name}
- 預定義變量
- 位置變量**
輸入賦值:read [-p "信息"] 變量名
雙引號:能解析變量
單引號:不能解析變量
反引號:解析命令並輸出
刪除變量:unset
變量名
位置變量(傳參):
test.sh
#!/bin/bash
#test.sh
echo $1
echo $2
echo $3
echo $4
echo $5
echo $6
echo $7
echo $8
調用:sh test.sh 1 2 3 4 5 6 7 ...(最多識別9個)
執行結果:
1
2
3
4
5
6
7
...
預定義變量:
$#:命令行中位置參數的個數
$*:所有參數的內容
$?:上一條命令執行後返回的狀態,當返回狀態值爲0時表示執行正常,非0表示執行異常或出錯
$0:當前執行的進程/程序名
shell計算
$(($1+$2)) (不需要轉義) or expr 2 + 3 +4 (需要轉義)
expr 4 * 2
expr 4 / 2
expr 4 % 2
and so on...
shell輸入、輸出
輸入
``
echo -n||e
-n
-e可以解析轉義字符
//設置字體顏色
echo -e "httped process \033[32;40m[OK]\033[0m"
\033[前景顏色;背景顏色m
\033[0m恢復到系統默認的顏色
前景顏色:30-37
背景顏色:40-47<br/>**輸出**<br/>
cat、head(首n行)、tail(尾n行)、tee(輸出一份並保存一份)、nl(加行號)
``