Shell指令碼傳引數方法總結

2022-09-26 16:39:24 字數 3185 閱讀 4992

一、接收固定長度的引數

複製** **如下:

[root@svn shell_example]# cat params.sh

#!/bin/bash

#傳參測試指令碼

echo "my name is `basename $0` -i was called as $0"

echo "my first parameter is : $1"

echo "my second parameter is : $2"

空引數執行

複製** **如下:

[root@svn shell_example]# sh params.sh

my name is params.sh -i was called as params.sh

my first parameter is :

my second parameter is :

傳遞2個引數執行

複製** **如下:程式設計客棧

[root@svn shell_example]# sh params.sh one two

my name is params.sh -i was called as params.sh

my first parameter is : one

my secon程式設計客棧d parameter is : two

二、那如果還有引數怎麼辦呢?還要乙個個加上來嗎?答案是否定的以下用法應該不陌生,就是直接執行指令碼本身,沒有附帶任何引數,那麼指令碼講丟擲幫助資訊.即怎麼使用此指令碼.見紅字部分

複製** **如下:

[root@svn shell_example]# sh params_v2.sh

my name is params_v2.sh -i was called as params_v2.sh

i was called with 0 parameters.

usage: params_v2.sh first second

you provided 0 parameters,but 2 are required程式設計客棧.

**如下

複製** **如下:

[root@svn shell_example]# cat params_v2.sh

#!/bin/bash

# 這是個測試指令碼傳參的測試例子

echo "my name is `basename $0` -i was called as $0"

echo "i was called with $# parameters."

if [ "$#" -eq "2" ];then

echo "my first parameter is $1"

echo "my second parameter is $2"

else

echo "usage: `basename $0` first second"

echo "you provided $# parameters,but 2 are required."

fi詳細的執行過程如下

不傳引數執行

複製** **如下:

[root@svn shell_example]# sh params_v2.sh

my name is params_v2.sh -i was called as params_v2.sh

i was called with 0 parameters.

usage: params_v2.sh first second

you provided 0 parameters,but 2 are required.

傳遞3個引數執行

複製** **如下:

[root@svn shell_example]# sh params_v2.sh one two three

my name is params_v2.sh -i was called as params_v2.sh

i was called with 3 parameters.

usage: params_v2.sh first second

you provided 3 parameters,but 2 are required.

傳遞2個引數執行

複製** **如下:

[root@svn shell_example]# sh params_v2.sh one two

my name is params_v2.sh -i was called as params_v2.sh

i was called with 2 parameters.

my first parameter is one

my second p is two

問題來了,要是後期還要加引數怎麼辦呢?或者我也不確定到底會傳幾個引數.

解決方法如下,詳細執行結果如下

複製** **如下:

[root@svn shell_example]# cat manyparams.sh

#!/bin/bash

#這是個測試指令碼傳n個引數的例子

echo "我的名字是 `basename $0` - 我是呼叫自 $0"

echo "我有 $# 引數"

count=1

while [ "$#" -ge "1" ];do

echo "引數序號為 $count 是 $1"

let count=count+1

shift

aokqlsbdone

乙個引數執行

[root@svn shell_example]# sh manyparams.sh one

我的名字是 manyparams.sh - 我是呼叫自 manyparams.sh

我有 1 引數

引數序號為 1 是 one

5個引數執行

複製** **如下:

[root@svn shell_example]# sh manyparams.sh one two three four five

我的名字是 manyparams.sh - 我是呼叫自 manyparams.sh

我有 5 引數

引數序號為 1 是 one

引數序號為 2 是 two

引數序號為 3 是 three

引數序號為 4 是 four

引數序號為 5 是 five

本文標題: shell指令碼傳引數方法總結

本文位址:

向shell指令碼傳引數

執行 nano test.sh 建立乙個新的shell指令碼。指令碼test.sh的內容如下 bin sh name 1 echo the are great man 給新建立的test.sh的指令碼賦可執行許可權,命令為 chmod 755 test.sh 執行 test.sh xiao wang...

如何給shell指令碼傳引數

用j a寫了乙個壓力測試的小程式 其實就是用j a的訊號量實現 可傳遞併發數之類的入參,放到linux環境上執行,編寫了乙個小小的shell指令碼,可以傳入併發數的入參,網上參考這文章,特記錄。一.執行 touch test.sh 建立乙個新的shell指令碼 指令碼test.sh的內容如下 bin...

shell指令碼傳參

喜歡用第二種方法 shell傳函式方法 法一 使用全域性變數 html view plain copy g result function testfunc testfunc echo g result 方法二 把shell函式作為子程式呼叫,將其結果寫到子程式的標準輸出 html view pla...