Unix IF无法将密钥/值数据设置为数组



我有一个以前工作的bash脚本。我使用unix IFS从文本文件中导入键/值:

#!/bin/bash
KEY=/home/myusr/.keyinfo
IFS="
"
set -A arr $(cat $KEY)
echo "This is ${arr[0]}"
echo "This is ${arr[1]}"

输入.keyinfo文件:

ABC 123

但是,我试图使它以不同的Linux味道进行工作,并且我收到了此错误消息:

./tst3.sh: line 7: set: -A: invalid option
set: usage: set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]
This is
This is

问题:

  • 这是使用IFS的更好方法吗?最佳练习?

我想将密钥/值对将其倒入数组中,然后在稍后在我的脚本中呼唤它们。

您可以通过这样的修改来使用代码:

#!/bin/bash
KEY=/home/myusr/.keyinfo
IFS=$' '  # omitting this line will do too, as IFS is defaulted to space
declare -a arr=($(cat $KEY))
echo "This is ${arr[0]}"
echo "This is ${arr[1]}"

使用declare来声明变量,而不是set

-A选项适用于关联阵列,-a用于索引数组。

而不是使用cat,您应该考虑使用:declare -a arr=($(< $KEY))

相关内容

  • 没有找到相关文章

最新更新