Shell學習05 引數傳遞

2021-09-24 18:52:56 字數 2208 閱讀 9274

執行指令碼時,可以向指令碼裡面傳遞引數,指令碼可以根據傳遞的引數進行進一步操作。

指令碼內獲取引數的格式為:$n。n代表乙個數字,比如 $1 表示傳進來的第乙個引數,$2 表示傳進來的第二個引數,以此類推。

建立指令碼並新增內容

touch chuancan.sh

vim chuancan.sh

#!/bin/bash

echo "shell 傳遞引數";

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

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

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

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

設定可執行許可權,並執行指令碼:

# 設定可執行許可權

chmod +x chuancan.sh

# 執行檔案

./chuancan.sh 引數一 引數二 引數三

# 輸出結果

shell 傳遞引數

執行的檔名:./chuancan.sh

第乙個引數為:引數一

第二個引數為:引數二

第三個引數為:引數三

#!/bin/bash

echo "shell 傳遞引數";

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

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

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

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

echo "$#"

echo "$*"

echo "$$"

echo "$@"

echo "$?"

# 輸出結果為:

shell 傳遞引數

執行的檔名:./chuancan.sh

第乙個引數為:引數一

第二個引數為:引數二

第三個引數為:引數三

3引數一 引數二 引數三

2437

引數一 引數二 引數三

0

例項:

#! /bin/bash

echo "-- \$* 測試 ---"

for i in "$*"; do

echo "$i"

done

echo "-- \$@ 測試 ---"

for i in "$@"; do

echo "$i"

done

# 輸出結果

-- $* 測試 ---

引數一 引數二 引數三

-- $@ 測試 ---

引數一引數二

引數三

有時候我們執行帶引數的指令碼可能只是為了某種特殊情況才需要傳入引數進行執行,比如說有個指令碼作用是轉移每一天的資料,執行一段時間後發現某一天的資料給沒了,或者某一天執行失敗但是沒被發現,那麼就需要傳入特定的天數引數去執行指令碼。

那麼問題來了,既然有時候會用到引數,那麼我們怎麼判斷指令碼裡是否有引數傳遞呢?

其實想一想就能知道,可以用判斷,如果傳進來的引數不為空,那麼就用傳進來的引數作為執行條件,若為空,則無事發生,繼續執行指令碼。

建立指令碼

# 建立指令碼

touch gettime.sh

# 給指令碼賦權

chmod +x gettime.sh

# 編輯指令碼

vim gettime.sh

輸入指令碼內容

#!/bin/bash

now_time=$(date +%y%m%d)

if [ $1 ];then

echo "現在時間為$1"

else

echo "現在時間為$"

fi

不帶引數執行:

# 執行指令碼

$ ./gettime.sh

# 執行結果

現在時間為20190626

帶引數執行:

# 執行指令碼

$ ./gettime.sh 20190505

# 執行結果

現在時間為20190505

指令碼內容使用if進行判斷,這裡注意兩點:一是獲取時間,$(date +%y%m%d) 中,date 與 + 號要用空格隔開,二是判斷語句中if與大括號間要用空格隔開,否則會執行失敗。具體函式後面會講,這裡不做過多介紹。

Shell學習計畫 Shell 傳遞引數

我們在執行 shell 指令碼時可以向指令碼傳遞引數。shell 指令碼內可以獲取我們傳遞的引數 向指令碼傳遞的引數以空格分開,空格數量沒限制,但至少乙個。在 shell 指令碼內獲取引數的格式為 n n代表乙個數字,1 為執行指令碼的第乙個引數,2 為執行指令碼的第二個引數,以此類推.注意 0為執...

Shell學習之傳遞引數

shell 傳遞引數 我們可以在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為 n。n 代表乙個數字,1 為執行指令碼的第乙個引數,2 為執行指令碼的第二個引數,以此類推 例項以下例項我們向指令碼傳遞三個引數,並分別輸出,其中 0 為執行的檔名 bin bash author...

shell引數傳遞

1.位置變數引數即可傳入到指令碼的引數,最多可以訪問 9個,比如 sh a b c d 其中 0 是指令碼名字 1 是第乙個引數 a以此類推 2.特殊參量 傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數。與位置變數不同,可以超過9個 指令碼執行的當前id 後台執行的最後乙個程序的程序...