results=
results['startlogdate']="Start time"
results['endlogdate']="$finish_time"
echo "${results[*]}"
我正在尝试初始化数组并将值添加到数组并回显数组。上面的代码是我的尝试。
答案 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中使用数组。你可以通过两种方式做到。
在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
直接使用(即),无需声明。
Unix[0]='Debian';Unix[1]='Red hat'