看自shell菜鳥教程:https://www.runoob.com/linux/linux-shell-variable.html
另外文檔可參考:http://www.zsythink.net/archives/category/%e5%bc%80%e5%8f%91/bash/
jp參看鏈接:https://blog.csdn.net/yanbingquan/article/details/50770911
https://www.linuxidc.com/Linux/2017-10/148037.htm
1.for循環
for file in `ls /etc`; do echo $file; done
等價於:
for file in $(ls /etc);do echo $file ;done
2.if條件語句:
注意:條件與符號[]之間要有空格,並且目錄名要寫絕對路徑;
錯誤:
if [ ! -d "~/shell-icode/" ];
then
mkdir ~/shell-icode
else
echo "file dir already exist"
fi
正確:
if [ ! -d "/Users/xxx/shell-icode/" ];
then
mkdir /Users/xxx/shell-icode
else
echo "file dir already exist"
fi
3.使用變量時才加$
4.變量名外面的花括號是可選的,加不加都行,加花括號是爲了幫助解釋器識別變量的邊界
echo "I am good at ${skill}Script"
注意:單引號裏的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
單引號字串中不能出現單獨一個的單引號(對單引號使用轉義符後也不行),但可成對出現,作爲字符串拼接使用。
5.多行註釋
可以將一段代碼定義成函數;或者利用:
:<<EOF
註釋內容...
註釋內容...
註釋內容...
EOF
注意:EOF可以爲任意字符;
6.實踐:寫腳本拉取git代碼,並執行項目中的單測,mvn命令
#!/bin/bash
function git_pull_master()
{
cd /xx/xx/xx/xx/xx
git clone ssh://xxxxxxxxxx
cd xx/xx/xx
}
if [ ! -d "/xx/xx/xx/xx/xx/" ];
then
mkdir /xx/xx/xx/xx/xx
else
echo "xx-xx-xx dir already exist"
fi
if [ ! -d "/xx/xx/xx/xx/xx/xx/xx/xx/" ];
then
git_pull_master
else
cd /xx/xx/xx/xx/xx/xx/xx/xx
git pull
fi
export MAVEN_HOME=/usr/local/maven3
export PATH=${PATH}:${MAVEN_HOME}/bin
export JAVA_HOME=/usr/local/jdk1.8.0_191
export JRE_HOME=/usr/local/jdk1.8.0_191/jre
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
mvn test
若腳本中,沒有給出環境變量;crontab -e設置定時任務時,報沒有mvn命令;
7.shell數組
#!/bin/bash
array_name=(
value0
value1
value2
value3
)
length=${#array_name[@]}
echo "獲取數組的長度:$length"
echo "獲取數組的每個元素:${array_name[@]}"
echo "獲取數組的每個元素:${array_name[*]}"
echo "獲取數組的第一個元素:${array_name[0]}"
echo "獲取數組的第一個元素的長度:${#array_name[0]}"
結果:
獲取數組的長度:4
獲取數組的每個元素:value0 value1 value2 value3
獲取數組的每個元素:value0 value1 value2 value3
獲取數組的第一個元素:value0
獲取數組的第一個元素的長度:6
8.條件表達式和運算符同表達式之間要有空格
if [ $a == $b ]
then
echo "a等於b"
else
echo "a不等於b"
fi
9.算數
a=5
b=6
result=$[a+b] # 注意等號兩邊不能有空格
echo "result 爲: $result"
result2=`expr $a + $b`
echo "result22爲:$result2"