我之前有过一些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
的更好方法吗?最佳做法?我想将键/值对转储到数组中,然后在我的脚本中调用它们。
答案 0 :(得分:2)
您可以通过以下方式修改代码来使用您的代码:
#!/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))