Bash指令碼入門

2021-09-27 01:34:53 字數 3615 閱讀 3459

新建乙個指令碼的基本流程為

注意事項:

向控制台輸出hello world ⇓

\darr

echo hello world
利用乙個變數,向控制台輸出hello world ⇓

\darr

a=

"hello world"

echo

$a

修改乙個變數的值(4種方法) ⇓

\darr

let i+=1;

((i++));

i=$[

$i+1];i=

$(($i+1))

# printf in binary

printf

"%05d\n"

`echo

"obase=2;$var"|bc

`# printf in decimal

printf

"%05d"

"$var"

)

# store the result of printf into a variable

cnt=

$(ls -al |

wc -l)

;cnt=

$(($cnt+1))

echo

$cnt

從命令列讀入乙個字串,並原樣輸出 ⇓

\darr

read input

echo you enter $input

迴圈向控制台輸出 3 個 hello world ⇓

\darr

# format 1

for((i=

0;i<

3;i++

))do

echo hello world $i

done

# format 2

for i in

doecho hello world $i

done

將整個陣列輸出到命令列 ⇓

\darr

story_list=

(hello0 hello1 hello2)

for i in

doecho

$done

基本格式如下

if

[ expression 1 ]

then

# command 1

elif

[ expression 2 ]

then

# command 2

else

# command 3

fi

例子:讀入乙個字元,並作出判斷 ⇓

\darr

echo

"do you...?(y/n):"

read readallif[

[$readall

="y"]]

;then

echo

"yes"

else

echo

"no"

fi

逐行讀取並輸出檔案內容 ⇓

\darr

cat filename.txt |

while

read line

doecho

$line

done

開啟乙個檔案,寫入乙個變數和一串字元⇓

\darr

a=

"hello world"

file=

"./filename.txt"

echo

$a>>

$file

echo

"----------------------"

>>

$file

執行程式rand_story ⇓

\darr

./rand_story story.txt words.txt 3
執行程式rand_story,並將程式輸出寫入到指定檔案 ⇓

\darr

./rand_story story.txt words.txt 3 >> output.txt
背景:假設我們現在有乙個程式要測試,程式接受三個輸入引數,前兩個分別是檔名(字串),第三個是乙個數字(數字)

功能:

# file name

file=

"./output.txt"

# clear the file content

echo

"">

$file

echo

"-----------test start-----------"

>>

$file

# modify number parameter

for i in;do

echo

====

=testcase $i

====

=>>

$file

./rand_story story.txt words.txt $i

>>

$file

done

story_list=

(story.txt story1.txt story2.txt)

# modify string parameter

for i in;do

echo

====

=testcase $i

====

=>>

$file

./rand_story $ words.txt 1 >>

$file

done

背景:有時候我們需要多次執行某乙個指令,直到執行成功,如持續ping乙個**直到ping通;當然我們也可以設定乙個最大執行次數,避免指令一直失敗從而長時間占用資源。同時,我們可以在兩次執行之間增加一點延遲。

**:

cnt=0

until

["$cnt" -ge 10 ];do

echo

"hello"

&&break

cnt=

$((cnt +1))

sleep 1m

done

這裡我們使用了一種寫法&&,意思就是當且僅當command 1執行完畢並且返回值為0(成功)的時候,才會執行command 2。

類似的語法還有||,意思就是當且僅當command 1執行完畢並且返回值不為0(錯誤)的時候,才會執行command 2。

應用場景:想要執行多個有依賴關係的指令時會格外有用(如後乙個指令要用到前乙個指令的結果,如果前乙個指令出錯則退出程式)。

||exit

||exit

||exit

bash 指令碼筆記

輸入了什麼引數 輸入了多少個引數 1輸入的第乙個引數,依此類推,直到 9 上一次的執行結果 為 1 2 3 一起被引號包住 為 1 2 3 分別被包住 為3 引數數量 d target target 是否是 目錄 f target 是否是檔案 e target 是否存在 目錄和檔案都適用 x tar...

bash指令碼基礎

shell 指令碼 一 如何建立新shell指令碼?1.建立包含bash命令的文字檔案。檔案第一行應為 bin bash 2.使檔案可執行 使用chmod x scripts 3.將檔案放置在使用者的 path的目錄中 bin 用於使用者的私有程式 usr local bin 本地開發 系統上的其他...

Bash 指令碼除錯

大神 bash是unix linux作業系統最常用的shell之一,它非常靈活,和awk c 配合起來異常強大 以下使用乙個測試指令碼來說明使用bash除錯的方法 test.sh bin bash echo begin awk end test.sh max 3 for i 0 i max i do...