Bash 数组不起作用?



下面的代码没有输出任何东西。

#!/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

我需要创建一个数组 a 仅用于所有者、管理员、loc 和 ser.

我期望回显 ${a[所有者]} 的输出是系统管理员组等等。

有什么帮助吗?

编辑:我认为这可能与所有者是系统管理员组有关,我如何将其(两个带空格的单词)读入变量(值)?

这是因为您正在使用管道的子外壳。在子外壳中所做的所有更改仅是子外壳的本地更改,不会反映在父外壳中。

使用这个:

#!/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

相关内容

  • 没有找到相关文章

最新更新