在我们的类脚本赋值中,我们需要传递任意数量的目录作为位置参数,并且我们的脚本(最终)将计算,显示并保存关于作为参数传递的目录的某些信息。我们需要对我们希望保存结果的文件的名称进行几次测试。如何在bash脚本中分配传递给变量的位置参数?
我的问题无疑是一个简单的问题,我想知道如何将存储在[email protected]
中的信息传递给一个变量,然后我可以将它用于所有需要做的测试。
在我们的类脚本赋值中,我们需要传递任意数量的目录作为位置参数,并且我们的脚本(最终)将计算,显示并保存关于作为参数传递的目录的某些信息。我们需要对我们希望保存结果的文件的名称进行几次测试。如何在bash脚本中分配传递给变量的位置参数?
我的问题无疑是一个简单的问题,我想知道如何将存储在[email protected]
中的信息传递给一个变量,然后我可以将它用于所有需要做的测试。
可以使用for
遍历[email protected]
数组遍历:
for arg in "[email protected]"
do
# use $arg
done
$ @是一个变量。所以是$ _和$ 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.
for i in [email protected]; do echo $i; done
在那里你更换回声$我不管你想与每个参数做。
你也可以参考[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)
@mrweinerdog:+1从我codaddict为是引用`$ @`这将保护援引包含单词拆分字符(通常是空格,制表符和换行符)参数的唯一的一个。 – 2010-12-05 04:39:32