一、接收固定長度的引數
複製** **如下:
[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...