2010-12-05 53 views
2

在我們的類腳本賦值中,我們需要傳遞任意數量的目錄作爲位置參數,並且我們的腳本(最終)將計算,顯示並保存關於作爲參數傳遞的目錄的某些信息。我們需要對我們希望保存結果的文件的名稱進行幾次測試。如何在bash腳本中分配傳遞給變量的位置參數?

我的問題無疑是一個簡單的問題,我想知道如何將存儲在[email protected]中的信息傳遞給一個變量,然後我可以將它用於所有需要做的測試。

回答

3

可以使用for遍歷[email protected]數組遍歷:

for arg in "[email protected]" 
do 
    # use $arg 
done  
+1

@mrweinerdog:+1從我codaddict爲是引用`$ @`這將保護援引包含單詞拆分字符(通常是空格,製表符和換行符)參數的唯一的一個。 – 2010-12-05 04:39:32

0

$ @一個變量。所以是$ _和$ 1,$ 2,...

聽起來你想要做的事可以通過使用「shift」和循環(「for」或「while」)來實現。或者,只需使用:

for i in [email protected]; do ...; done

供您參考:

shift: shift [n] The positional parameters from $N+1 ... are renamed to $1 ... If N is not given, it is assumed to be 1.

0

你也可以參考[email protected]中的參數,它有點像數組。它是一個,但不能使用數組下標。但是,您可以使用陣列切片:

echo ${@:3:1} # [email protected] is ONE-based 

echo第三個參數。

echo ${@:4:3} 

echo第四,第五和第六個參數。

順便說一句,[email protected]的「下標」是$1,$2 ... $#。最後一個,$#,是參數數量的計數。 $0有特殊的作用。它包含腳本的名稱和路徑。

您也可以將整個事物(甚至是其中的一部分)分配給可以使用下標的數組。

some_array=("[email protected]") 
echo ${some_array[3]}  # the fourth element (ZERO based) 
echo ${some_array[3]:4:3} # 5th, 6th and 7th chars of the fourth element 
echo ${some_array[@]:4:3} # 5th, 6th and 7th ELEMENTS 
echo ${some_array[@]: -1} # the last element (notice the space) 
相關問題