1. shell腳本
通過一系列程式語句幫我完成重複工作
2. 腳本的檔案頭最好記錄好如下内容:
(1) 功能 (2)版本資訊 (3)作者與聯系方式 (4) 版權聲明方式 (5) 曆史記錄 (6) 特殊指令用 絕對路徑 執行 (7) 運作時需要的環境變量預先聲明與設定
3.學習
$( (計算式) ) 可以進行整數計算
bc : 計算小數點可以用bc
echo "1.1 *5 " | bc
bash和source: 我們執行指令一般用的是
bash test.sh
或者
sh test.sh
但是bash或者sh執行指令都是啟動一個新的子程序來進行操作,如果我們想在父程序中執行指令的話,需要執行source
source test.sh
這樣test.sh中定義的變量就會在父程序中生效.
test: 測試某個指令是否存在 test -e [filename] test有很多選項,可以判斷檔案字元串,權限等,詳情 --help
[]:我們可以使用中括号來達到和test相同的效果,比如:
[ -z "${HOME}" ]; $?
如果 ${HOME} 不存在,會輸出1,存在會輸出 0.還可以比較字元串,比如:
[ "123" == "123" ]
我們也可以通過 $? 判斷結果,需要注意的是前後都需要空格,雙等号前後也需要.
參數最好也要用雙引号括起來,否則會報錯比如:
name="li li"
[ ${name} == "li li" ]
把${name}用雙引号括起來就可以,"${name}",不括起來的話就會比較 li li == "li li" 有多個參數.
shell的預設變量:
$# 參數個數
$@所有變量
$* 同$@ 用空格分割
$1 第一個參數
$2 第二個參數以此類推
shift:變量偏移可以把變量起始位置向後偏移,也就是删除了第一個變量
if:文法
if [ "${name}" == "hello" ]
echo "Yes"
elif [ "${name}" == "world" ]
echo "Yes world"
else
echo "NO"
fi
基本文法就這,和其他語言差不多
netstat -tuln:檢視啟動的服務 127.0.0.1隻對本機開放,如果是0.0.0.0則對所有網絡開放
case文法:
case $變量名稱 in
"ONE")
echo "ONE"
;;
"TWO")
echo "TWO"
;;
*)
echo "Default"
;;
esac
其實和switch差不多,沒什麼好說的
function:函數
function printHello(){
echo "Hello"
}
printHello
可以定義函數, 也可以在函數後面加參數,用$1接收,這時候的$1指的是函數的參數,不是腳本的參數
循環:
不定循環:
while [condition]
do
程式
done
#當條件滿足一直循環
until [condition]
do
程式
done
#當條件滿足終止循環
固定循環:
for var in con1 con2...
do
程式
done
還可以用類似于java中的for循環來處理
for (( i=1; i<=5; i=i+1 ))
do
echo "Hello"
done
seq: 比如 seq 1 100 輸出1到100連續的數字
sh可以在執行腳本前進行校驗 sh -n hello.sh 加上-n參數就可以,其實vim就有校驗功能,其實都差不多。 -v 執行腳本前先輸出腳本内容,-x執行過程顯示到螢幕上