2010-12-05 52 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) 
相关问题