2010-12-12 110 views
131

如何找到傳遞給Bash腳本的參數數目?如何找到傳遞給Bash腳本的參數數目?

這是我目前:

#!/bin/bash 
i=0 
for var in "[email protected]" 
do 
    i=i+1 
done 

這樣做的還有其他(更好)的方式?

+3

該代碼將簡單地存儲字串'i的變量'i'如果任何參數都存在+ 1'。 – Philipp 2010-12-12 19:18:00

+0

@TheConstructor:看看OP的記錄,即接近5。5年的2個帖子,只有業力的被動積累(其中95%在這個問題上)。我真的不認爲他可以被認爲是一個積極的用戶,或者他給出了一個關於給予任何幫助的人接受的答案勾號的保護帽。他的問題是完全合法的,並且幫助了那些在「男子氣概」中缺乏實踐經驗的人。所以,活着,讓我們活下去吧!--) – Cbhihe 2016-04-02 17:41:19

+0

@Cbhihe我以爲我會嘗試一下。 OP可能仍在閱讀並查看通知。我得到了「無用的英雄」 - 通常不會提醒OP接受我的回答。儘管如此,如果他們中的一個最終會接受我的回答,我仍然會感到自豪。 – TheConstructor 2016-04-02 17:45:18

回答

82
#!/bin/bash 
echo "The number of arguments is: $#" 
a=${@} 
echo "The total length of all arguments is: ${#a}: " 
count=0 
for var in "[email protected]" 
do 
    echo "The length of argument '$var' is: ${#var}" 
    ((count++)) 
    ((accum += ${#var})) 
done 
echo "The counted number of arguments is: $count" 
echo "The accumulated length of all arguments is: $accum" 
+4

工作+1例!不錯 – MountainX 2013-07-13 19:52:11

+0

它也幫助了我,我試圖做的是; #!/斌/慶典 數= 0 總和= 0 平均= 0 爲 「$ @」 做 ((總和+ = $ VAR)) VAR((計數++)) 完成 ( (avg = sum/$ count)) echo「數字總和爲:$ sum」 echo「數字的平均值爲:$ avg」 這可以幫助我獲得未知數的參數並進行一些數學計算(您可以編輯操作數) 感謝丹尼斯威廉姆森,我做到了。我發佈到代碼,因爲它可能對某人有用。 – 2016-03-04 11:28:15

+1

@kaanyılmaz:唯一的問題是,Bash只做整數算術。如果你想要小數點,你需要使用AWK,'bc'或其他的東西(ksh93和zsh也可以做十進制數學)。您的代碼包含一些變量的美元符號,但不包括其他變量。你應該對使用它們是否一致。在'(())'裏面,他們沒有必要。然而,它們在「回聲」語句中。 – 2016-03-04 17:47:15

-4

該值包含在可變$#

+2

除了事實上有幾乎完全相同(但正確)的答案,這是4歲,你的答案是錯的 - 它應該是'$#' – nachteil 2016-05-24 08:05:37

1

下面是輕鬆的一年 -

cat countvariable.sh

echo "[email protected]" |awk '{for(i=0;i<=NF;i++); print i-1 }' 

輸出:

#./countvariable.sh 1 2 3 4 5 6 
6 
#./countvariable.sh 1 2 3 4 5 6 apple orange 
8 
+0

可以寫成'echo「$ @」| awk'{print NF}'' – user000001 2016-10-06 12:16:02