如何在shell脚本中使用单维数组并显示数组?

时间:2014-01-08 06:51:32

标签: shell

results=
results['startlogdate']="Start time"
results['endlogdate']="$finish_time"
echo "${results[*]}"

我正在尝试初始化数组并将值添加到数组并回显数组。上面的代码是我的尝试。

3 个答案:

答案 0 :(得分:1)

在bash脚本中,有两种数组:数字索引和关联索引。

根据shell的版本,可能不支持关联索引的数组。

与您的问题中的示例相关,获取数组的的正确语法(每个都作为单独的单词)是:

"${results[@]}"

要获取关联数组的,请执行:

"${!results[@]"

下面的脚本演示了关联数组的使用。有关详细信息,请参阅Arrays联机帮助页中的bash部分。

#!/bin/bash
# tst.sh
declare -A aa
aa[foo]=bar
aa[fee]=baz
aa[fie]=tar
for key in "${!aa[@]}" ; do
  printf "key: '%s'    val: '%s'\n" $key "${aa[$key]}"
done
echo "${aa[@]}"
exit

这是输出:

$ bash tst.sh
key: 'foo'    val: 'bar'
key: 'fee'    val: 'baz'
key: 'fie'    val: 'tar'
tar bar baz

最后,我已经提供了我的数组函数库(也就是“列表”),我多年来一直使用它来简化数组管理数据。

查看https://github.com/aks/bash-lib/blob/master/list-utils.sh

即使你选择不使用该库,你也可以通过阅读那里的代码来学习很多关于数组的知识。

祝你好运。

答案 1 :(得分:0)

finish_time =`date`

结果[0] =“开始时间”

结果[1] = “$ finish_time”

echo $ {results [@]}

输出:开始时间2014年1月1日星期三12:25:14 IST 2014

元素数量:echo $ {#results [@]}

bash中的数组是零索引,因此$ {results [0]}将是“开始时间”而$ {results [1]}将是“Wed Jan 8 12:25:14 IST 2014”

答案 2 :(得分:0)

如果想在bash中使用数组。你可以通过两种方式做到。

  1. 在bash中声明一个数组 declare -a Unix=('Debian' 'Red hat' 'Red hat' 'Suse' 'Fedora');
    echo ${Unix[0]} # Prints the first element
    echo ${Unix[*]} # prints all the elements of an array

  2. 直接使用(即),无需声明。 Unix[0]='Debian';Unix[1]='Red hat'