Shell 參數(shù)傳遞的使用方法
我們可以在執(zhí)行 Shell 腳本時(shí),向腳本傳遞參數(shù),腳本內(nèi)獲取參數(shù)的格式為: $n。n 代表一個(gè)數(shù)字,1 為執(zhí)行腳本的第一個(gè)參數(shù),2 為執(zhí)行腳本的第二個(gè)參數(shù),以此類(lèi)推……
具體實(shí)例:
以下實(shí)例我們向腳本傳遞三個(gè)參數(shù),并分別輸出,其中 $0 為執(zhí)行的文件名(包含文件路徑):
echo "Shell 傳遞參數(shù)實(shí)例!"; echo "執(zhí)行的文件名:$0"; echo "第一個(gè)參數(shù)為:$1"; echo "第二個(gè)參數(shù)為:$2"; echo "第三個(gè)參數(shù)為:$3";
為腳本設(shè)置可執(zhí)行權(quán)限,并執(zhí)行腳本,輸出結(jié)果如下所示:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 傳遞參數(shù)實(shí)例! 執(zhí)行的文件名:./test.sh 第一個(gè)參數(shù)為:1 第二個(gè)參數(shù)為:2 第三個(gè)參數(shù)為:3
另外,還有幾個(gè)特殊字符用來(lái)處理參數(shù):

echo "Shell 傳遞參數(shù)實(shí)例!"; echo "第一個(gè)參數(shù)為:$1"; echo "參數(shù)個(gè)數(shù)為:$#"; echo "傳遞的參數(shù)作為一個(gè)字符串顯示:$*";
執(zhí)行腳本,輸出結(jié)果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3
Shell 傳遞參數(shù)實(shí)例!
第一個(gè)參數(shù)為:1
參數(shù)個(gè)數(shù)為:3
傳遞的參數(shù)作為一個(gè)字符串顯示:1 2 3
∗與* 與 ∗與@ 區(qū)別:
- 相同點(diǎn):都是引用所有參數(shù)。
- 不同點(diǎn):只有在雙引號(hào)中體現(xiàn)出來(lái)。假設(shè)在腳本運(yùn)行時(shí)寫(xiě)了三個(gè)參數(shù) 1、2、3,,則 " * " 等價(jià)于 "1 2 3"(傳遞了一個(gè)參數(shù)),而 "@" 等價(jià)于 "1" "2" "3"(傳遞了三個(gè)參數(shù))。
echo "-- $* 演示 ---"
for i in "$*"; do
echo $i
done
echo "-- $@ 演示 ---"
for i in "$@"; do
echo $i
done執(zhí)行腳本,輸出結(jié)果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3
含有空格的參數(shù),只需要在參數(shù)傳遞的時(shí)候加雙引號(hào)就可以。
#!/bin/bash
echo "---------------with double quote ---------------"
echo "$1"
echo "$2"
echo "$3"
my_procedure() {
echo "$1"
echo "$2"
echo "$3"
}
my_procedure "$@"
echo "---------------withtout double quote ---------------"
echo $1
echo $2
echo $3
my_procedure() {
echo $1
echo $2
echo $3
}
my_procedure "$@"
echo "---------------withtout double quote by passing arguments---------------"
my_procedure $@輸入:
./test.sh "a b" "c d" "e f"
輸出結(jié)果為:
---------------with double quote ---------------
a b
c d e
f g
a b
c d e
f g
---------------withtout double quote ---------------
a b
c d e
f g
a b
c d e
f g
---------------withtout double quote by passing arguments ---------------
a
b
c
前兩部分無(wú)論在函數(shù)內(nèi)外,加不加引號(hào)都一樣,但是在函數(shù)傳遞的時(shí)候要保證加引號(hào)。
到此這篇關(guān)于Shell 參數(shù)傳遞的使用方法的文章就介紹到這了,更多相關(guān)Shell 參數(shù)傳遞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
shell腳本自動(dòng)刪除30天以前的文件(最新推薦)
該文章介紹了如何使用Shell腳本自動(dòng)刪除指定目錄下30天以前的文件,并通過(guò)crontab設(shè)置定時(shí)任務(wù),此外,還提供了如何使用Shell腳本刪除Elasticsearch索引的參考,感興趣的朋友一起看看吧2025-02-02
linux生成(加載)動(dòng)態(tài)庫(kù)靜態(tài)庫(kù)和加載示例方法
這篇文章主要介紹了linux生成(加載)動(dòng)態(tài)庫(kù)靜態(tài)庫(kù)示例方法,大家參考使用2013-11-11
Shell腳本處理浮點(diǎn)數(shù)的運(yùn)算和比較實(shí)例
這篇文章主要介紹了Shell腳本處理浮點(diǎn)數(shù)的運(yùn)算和比較實(shí)例,文中分別使用了bc或awk實(shí)現(xiàn),需要的朋友可以參考下2014-06-06
shell腳本發(fā)送http請(qǐng)求的實(shí)現(xiàn)示例
本文主要介紹了shell腳本發(fā)送http請(qǐng)求的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04

