以下代码未输出任何内容。
#!/bin/bash
declare -A a
cat input.txt | while read item value
do
if [ $item="owner" ] || [ $item="admin" ] || [ $item="loc" ] || [ $item="ser"]
then
a[$item]=$value
fi
done
echo ${a[owner]}
输入文件是:
owner sysadmin group
admin ajr
loc S-309
ser 18r97
comment noisy fan
我需要为owner,admin,loc和ser。
创建一个仅用于索引的数组我期望echo $ {a [owner]}的输出为sysadmin组,依此类推。
任何帮助?
编辑: 我认为它可能与所有者有关系是sysadmin组,我如何将它(带空格的两个单词)读成变量(值)?
答案 0 :(得分:1)
这是因为您使用管道来使用子shell。在子shell中进行的所有更改仅对子shell是本地的,不会反映在父shell中。
使用此:
#!/bin/bash
declare -A a
while read item value
do
if [ $item="owner" ] || [ $item="admin" ] || [ $item="loc" ] || [ $item="ser"]
then
a[$item]=$value
fi
done < input.txt
echo ${a[owner]}
sysadmin group