我有一个以前工作的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))