Bash-如何获取数组中特定元素的值

时间:2018-11-28 19:25:31

标签: arrays bash

我有一个设置正确的数组,并且在打印时具有正确的值和长度。但是,当我执行$ {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

我觉得我快疯了,这很简单。至少我是这么认为的。在文档中找不到任何内容告诉我要做任何不同的事情……那为什么不带回价值呢?

2 个答案:

答案 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