Linux學習筆記(6)

2021-10-06 13:53:21 字數 3274 閱讀 5159

我們可以在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為:$nn代表乙個數字,1 為執行指令碼的第乙個引數,2 為執行指令碼的第二個引數,以此類推……

以下例項我們向指令碼傳遞三個引數,並分別輸出,其中$0為執行的檔名:

#!/bin/bash

# author:菜鳥教程

# url:www.runoob.com

echo "shell 傳遞引數例項!";

echo "執行的檔名:$0";

echo "第乙個引數為:$1";

echo "第二個引數為:$2";

echo "第三個引數為:$3";

為指令碼設定可執行許可權,並執行指令碼,輸出結果如下所示:

$ chmod +x test.sh 

$ ./test.sh 1 2 3

shell 傳遞引數例項!

執行的檔名:./test.sh

第乙個引數為:1

第二個引數為:2

第三個引數為:3

另外,還有幾個特殊字元用來處理引數:

引數處理說明$#傳遞到指令碼的引數個數$*以乙個單字串顯示所有向指令碼傳遞的引數。

如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有引數。$$指令碼執行的當前程序id號$!後台執行的最後乙個程序的id號$@與$*相同,但是使用時加引號,並在引號中返回每個引數。

如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有引數。$-顯示shell使用的當前選項,與set命令

功能相同。$?顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。

#!/bin/bash

# author:菜鳥教程

# url:www.runoob.com

echo "shell 傳遞引數例項!";

echo "第乙個引數為:$1";

echo "引數個數為:$#";

echo "傳遞的引數作為乙個字串顯示:$*";

執行指令碼,輸出結果如下所示:

$ chmod +x test.sh 

$ ./test.sh 1 2 3

shell 傳遞引數例項!

第乙個引數為:1

引數個數為:3

傳遞的引數作為乙個字串顯示:1 2 3

$* 與 $@ 區別:

#!/bin/bash

# author:菜鳥教程

# url:www.runoob.com

echo "-- \$* 演示 ---"

for i in "$*"; do

echo $i

done

echo "-- \$@ 演示 ---"

for i in "$@"; do

echo $i

done

執行指令碼,輸出結果如下所示:

$ chmod +x test.sh 

$ ./test.sh 1 2 3

-- $* 演示 ---

1 2 3

-- $@ 演示 ---12

3

陣列中可以存放多個值。bash shell 只支援一維陣列(不支援多維陣列),初始化時不需要定義陣列大小(與 php 類似)。

與大部分程式語言類似,陣列元素的下標由0開始。

shell 陣列用括號來表示,元素用"空格"符號分割開,語法格式如下:

array_name=(value1 ... valuen)
#!/bin/bash

# author:菜鳥教程

# url:www.runoob.com

my_array=(a b "c" d)

我們也可以使用下標來定義陣列:

array_name[0]=value0

array_name[1]=value1

array_name[2]=value2

讀取陣列元素值的一般格式是:

$
#!/bin/bash

# author:菜鳥教程

# url:www.runoob.com

my_array=(a b "c" d)

echo "第乙個元素為: $"

echo "第二個元素為: $"

echo "第三個元素為: $"

echo "第四個元素為: $"

執行指令碼,輸出結果如下所示:

$ chmod +x test.sh 

$ ./test.sh

第乙個元素為: a

第二個元素為: b

第三個元素為: c

第四個元素為: d

使用@ 或 * 可以獲取陣列中的所有元素,例如:

#!/bin/bash

# author:菜鳥教程

# url:www.runoob.com

my_array[0]=a

my_array[1]=b

my_array[2]=c

my_array[3]=d

echo "陣列的元素為: $"

echo "陣列的元素為: $"

執行指令碼,輸出結果如下所示:

$ chmod +x test.sh 

$ ./test.sh

陣列的元素為: a b c d

陣列的元素為: a b c d

獲取陣列長度的方法與獲取字串長度的方法相同,例如:

#!/bin/bash

# author:菜鳥教程

# url:www.runoob.com

my_array[0]=a

my_array[1]=b

my_array[2]=c

my_array[3]=d

echo "陣列元素個數為: $"

echo "陣列元素個數為: $"

執行指令碼,輸出結果如下所示:

$ chmod +x test.sh 

$ ./test.sh

陣列元素個數為: 4

陣列元素個數為: 4

Linux學習筆記(6)

12.不同系統之間的檔案傳輸 3.檔案查詢 1.locate filename 在檔案資料庫中搜尋filename資訊,updatedb更新檔案資料庫 2.find find 查詢位置 條件 條件值 exec 動作 name not 條件 user group size perm maxdepth ...

linux驅動學習筆記6

在open函式中寫申請中斷函式 request irq int request irq unsigned int irq,void handler int irq,void dev id,struct pt regs regs unsigned long irqflags,const char de...

Linux學習筆記(6) 工作管理

什麼是工作管理 工作來自job命令的翻譯,job命令可以檢視後台工作的程序。舉例來說什麼是工作管理,當你要打包乙個比較大的目錄時,很耗時間,但是你同時又需要使用別的命令。你會想我可以到開幾個終端進行登入。在 etc security limits.conf裡面可以設定使用者同時可以登入的連線數,如果...