shell-筆記

看自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"

10.jq解析json串

發佈了97 篇原創文章 · 獲贊 67 · 訪問量 46萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章