bash腳本使用記錄

1.基礎(chǔ)示例

說明:第一行是腳本使用的Shell,即/bin/bash路徑的Bash程序。

#!/bin/bash
echo "Hello World"

2.將指定信息存儲(chǔ)到log文件中

#!/bin/bash
echo "Hello World" > log
uname -a >> log

3.參數(shù)

test.sh

#!/bin/bash
echo "第1個(gè)參數(shù) $0"

echo "第2個(gè)參數(shù) $1"

echo "第3個(gè)參數(shù) $2"

echo "第4個(gè)參數(shù) $3"

運(yùn)行:

sh test.sh Hello World

輸出:

第1個(gè)參數(shù) test.sh
第2個(gè)參數(shù) Hello
第3個(gè)參數(shù) World
第4個(gè)參數(shù)

4.腳本返回碼

如果腳本中出現(xiàn)exit命令,腳本會(huì)在這一行停止并返回返回碼。
test.sh

#!/bin/bash
echo "第1個(gè)參數(shù) $0"

echo "第2個(gè)參數(shù) $1"

exit 1

echo "第3個(gè)參數(shù) $2"

echo "第4個(gè)參數(shù) $3"

運(yùn)行:

sh test.sh Hello World

輸出:

第1個(gè)參數(shù) test.sh
第2個(gè)參數(shù) Hello

運(yùn)行:返回腳本的返回碼

echo $?

輸出:

1

5.函數(shù)

函數(shù)可以實(shí)現(xiàn)程序復(fù)用。一個(gè)函數(shù)可以包含多行腳本命令浸踩,調(diào)用時(shí)執(zhí)行。

#!/bin/bash
function foo() {
  echo hello 111
  echo hello > log
  uname -a >> log
}
foo

函數(shù)傳參數(shù)统求。

#!/bin/bash
function foo() {
  echo $1
  echo $1 > log
  uname -a >> log
}
foo hello

6.跨腳本調(diào)用

使用source命令實(shí)現(xiàn)跨腳本調(diào)用检碗。source命令的作用是在同一個(gè)進(jìn)程中執(zhí)行另一個(gè)文件中的腳本。
下面的示例運(yùn)行main.sh時(shí)码邻,source命令執(zhí)行test.sh文件折剃,所以在后續(xù)使用時(shí)就可以調(diào)用test.sh中的foo函數(shù)。

test.sh

#!/bin/bash
function foo() {
  echo $1
  echo $1 > log
  uname -a >> log
}

main.sh

#!/bin/bash
source test.sh
foo hello

7.邏輯判斷

test命令后跟判斷表達(dá)式像屋,其中-gt表示大于怕犁,所以3大于2成立,命令的返回代碼是0己莺;

#!/bin/bash
test 3 -gt 2;
echo $?

輸出:

0

-lt表示小于奏甫,所以3小于2不成立,命令的返回代碼是1凌受;
也可以進(jìn)行文本值判斷扶檐,其中a=b不成立,返回1胁艰;其中a!=b成立,返回0智蝠;

#!/bin/bash
test 3 -lt 2;
echo $?

test a = b;
echo $?

test a != b;
echo $?

輸出:

1

-eq表示等于
-ne表示不等于
-ge表示大于等于
-le表示小于等于

判斷文件狀態(tài):
文件是否存在:test -e file.out
文件是否存在,而且是普通文件:test -f file.txt
文件是否存在,而且是目錄文件:test -d file
文件是否可讀:test -r file.txt
文件是否可寫:test -w file.txt
文件是否可執(zhí)行:test -x file.txt

連接多個(gè)邏輯判斷
:!exp
:exp -a exp
:exp -o exp

if [[ 3 > 2 && 4 > 2 ]]; then
    echo 'success'
fi
//等價(jià)于
if [ 3 -gt 2 -a 4 -gt 2 ]; then
    echo 'success'
fi

8.選擇判斷

[]里邊是判斷表達(dá)式腾么; fi表示判斷的結(jié)束。

#!/bin/bash
a = "abc"
if [ $a == "root" ]; then
    echo 'root'
elif [ $a == "abc" ]; then
    echo 'abc'
else
    echo ''
fi

//判斷文件是否存在
file = $1
if [ -e $file ]; then
    echo '文件存在'
else
    echo '文件不存在'
fi

case判斷杈湾。
語法規(guī)則:

case ${VAR} in
    pattern1)
        commands1
        ;;
    pattern2)
        commands2
        ;;
esac

示例:
*代表任何多個(gè)或者0個(gè)普通字符解虱;?代表任意一個(gè)普通字符;[]范圍內(nèi)一個(gè)字符漆撞。

#!/bin/bash

VAR="AABB"
case "${VAR}" in
    *AB*)
        echo "MATCH" 
        ;;
    *)
        echo "UNMATCH" 
        ;;
esac

輸出:

MATCH

多選一
其中*AB不匹配殴泰;*BB匹配。

#!/bin/bash

VAR="AABB"
case "${VAR}" in
    AB* | *BB)
        echo "MATCH" 
        ;;
    *)
        echo "UNMATCH" 
        ;;
esac

輸出:

MATCH

9.循環(huán)結(jié)構(gòu)

while循環(huán)浮驳。

#!/bin/bash
count=0
while [ $count -lt 10]
do
    echo "$count"
    let count+=1
done

for循環(huán)悍汛。
命令ls log*將返回所有以log開頭的文件名。循環(huán)時(shí)每個(gè)文件賦值給變量var至会。

#!/bin/bash
for var in `ls log*`
do
  rm $var
done

//seq命令生成一個(gè)等差數(shù)列离咐,后邊可以跟三個(gè)參數(shù),第一個(gè)參數(shù)表示整數(shù)數(shù)列的開始數(shù)字,第二個(gè)參數(shù)表示每次增加多少宵蛀,第三個(gè)參數(shù)表示結(jié)束數(shù)字昆著。
total=0
for number in `seq 1 1 100`
do
  total=$(( $total + $number ))
done

echo $total

for循環(huán)數(shù)組:@表示所有參數(shù)

list=("a" "b" "c")
for i in ${list[@]}
do
  echo $i
done

其中可以使用breakcontinue語句。

10.使用sh實(shí)現(xiàn)git自動(dòng)化提交

#!/bin/bash

echo "build environment:$1";
echo "commit :$2";

branch=`git branch | grep "*"` # 獲取分支名
br=${branch:2} # 去除多余的*
echo "branch $br"

msg="$2:default commit"

echo "git autopush start..."
git add .
git commit -m $msg
git push origin $br
echo "git autopush end..."
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末术陶,一起剝皮案震驚了整個(gè)濱河市凑懂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌梧宫,老刑警劉巖接谨,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異祟敛,居然都是意外死亡疤坝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門馆铁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跑揉,“玉大人,你說我怎么就攤上這事埠巨±” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵辣垒,是天一觀的道長(zhǎng)望侈。 經(jīng)常有香客問我,道長(zhǎng)勋桶,這世上最難降的妖魔是什么脱衙? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮例驹,結(jié)果婚禮上捐韩,老公的妹妹穿的比我還像新娘。我一直安慰自己鹃锈,他們只是感情好荤胁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屎债,像睡著了一般仅政。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盆驹,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天圆丹,我揣著相機(jī)與錄音,去河邊找鬼躯喇。 笑死运褪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秸讹,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼檀咙,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了璃诀?” 一聲冷哼從身側(cè)響起弧可,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎劣欢,沒想到半個(gè)月后棕诵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凿将,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年校套,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牧抵。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡笛匙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出犀变,到底是詐尸還是另有隱情妹孙,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布获枝,位于F島的核電站蠢正,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏省店。R本人自食惡果不足惜嚣崭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望懦傍。 院中可真熱鬧有鹿,春花似錦、人聲如沸谎脯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽源梭。三九已至,卻和暖如春稍味,著一層夾襖步出監(jiān)牢的瞬間废麻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工模庐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烛愧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像怜姿,于是被迫代替她去往敵國和親慎冤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,378評(píng)論 0 5
  • 第 2 章 SHELL 基礎(chǔ)知識(shí)2.1 shell腳本我們?cè)谏厦婧?jiǎn)單介紹了一下什么是shell腳本沧卢,現(xiàn)在我們來進(jìn)一...
    LiWei_9e4b閱讀 1,562評(píng)論 0 0
  • 建立一個(gè)腳本 Linux中有好多中不同的shell蚁堤,但是通常我們使用bash (bourne again shel...
    某人在閱讀 2,003評(píng)論 0 0
  • Linux中有好多中不同的shell,但是通常我們使用bash (bourne again shell) 進(jìn)行sh...
    為了明天_加油閱讀 299評(píng)論 0 0
  • #########################################################...
    半齋閱讀 3,738評(píng)論 0 3