我有一个设置正确的数组,并且在打印时具有正确的值和长度。但是,当我执行$ {inputs [1]}尝试获取特定值时,它没有返回任何内容。
这是我在数组中使用的所有命令(将简化它们,因此我不必发布整个脚本):
# Instantiate, because I use it in a for loop (have also tried "declare -a inputs")
inputs=()
for (){
# Get arguments into array
inputs+=$1
shift
# do other stuff
}
# Test array has values
echo $inputs
# returns the arguments
echo ${#inputs}
# returns the # of arguments
echo ${inputs[0]}
# returns nothing, no matter what index
我觉得我快疯了,这很简单。至少我是这么认为的。在文档中找不到任何内容告诉我要做任何不同的事情……那为什么不带回价值呢?
答案 0 :(得分:2)
您可以在脚本中进行一些更改以使其正常运行。 如果要遍历传递给脚本的所有参数,则可以使用简单的for循环
for arg in "$@"
do
# process current argument
done
您还可以将参数添加到inputs
变量中,但是可能应该这样做
inputs+=($arg)
第一个变化并不那么重要,而只是一个偏好问题,但是第二个变化应该可以帮助您解决当前的问题。
答案 1 :(得分:1)
您正在从函数外部进行回显,同时在内部分配了值。
inputs=()
fored (){
# Get arguments into array
inputs+=$1
shift
# do other stuff
echo "${inputs[0]}"
}
此外,请勿将“ for”用作函数名称。
执行执行(传递值“ pepito”):
ivo@spain-nuc-03:~/Downloads/TestStackoverflow$ ./processing.sh
pepito
BR