如何在bash中为脚本中的变量分配传递的位置参数?

时间:2010-12-05 03:54:52

标签: bash shell

在我们的类脚本分配中,我们需要传递任意数量的目录作为位置参数,我们的脚本(最后)将计算,显示和保存文件,作为参数传递的目录的某些信息。我们反过来需要对我们希望将结果保存到的文件的名称进行多次测试。

我的问题无疑是一个简单的问题,我想知道如何将$@中存储的信息传递给一个变量,然后我可以将其用于我需要进行的所有测试。

4 个答案:

答案 0 :(得分:3)

您可以使用for循环来遍历$@数组:

for arg in "$@"
do
   # use $arg
done     

答案 1 :(得分:0)

$ @ 变量。那么是$ _和$ 1,$ 2,......

听起来你想做的事情可以通过使用“shift”和循环(“for”或“while”)来实现。或者,只需使用:

for i in $@; 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.

答案 2 :(得分:0)

for i in $@; do echo $i; done

将echo $ i替换为您想要对每个参数执行的操作。

答案 3 :(得分:0)

您也可以在$@中引用参数,有点像数组。它是一个,但你不能使用数组下标。但是,您可以使用数组切片:

echo ${@:3:1}    # $@ is ONE-based

echo第三个参数。

echo ${@:4:3}

echo第四,第五和第六个论点。

顺便说一下,$@的“下标”是$1$2 ... $#。最后一个$#是参数数量的计数。 $0有特殊的作用。它包含脚本的名称和路径。

您还可以将整个事物(甚至部分内容)分配给您可以使用下标的数组。

some_array=("$@")
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)