macos - readarray 的替代方法,因为它在 mac os x 上不起作用

标签 macos perl bash awk

我有一个 varsValues.txt 文件

cat varsValues.txt
aa=13.7
something=20.6
countries=205
world=1
languages=2014
people=7.2
oceans=3.4

我想创建 2 个数组、变量和值。它应该包含

echo ${vars[@]}
aa something countries world languages people oceans

echo ${values[@]}
13.7 20.6 205 1 2014 7.2 3.4

我用

Npars=7

readarray -t vars < <(cut -d '=' -f1 varsValues.txt)
readarray -t values < <(cut -d '=' -f2 varsValues.txt)

for (( yy=0; yy<$Npars; yy++ )); do
eval ${vars[$yy]}=${values[$yy]}
done

echo $people
7.2

但我希望它没有 readarray,它在 Mac (os x) 和 IFS(场间分隔符)上不起作用。

还有其他解决方案吗?哇?珀尔?我可以在我的 bash 脚本中使用它。

谢谢。

最佳答案

您可以使用读取循环。

while IFS=\= read var value; do
    vars+=($var)
    values+=($value)
done < VarsValues.txt

关于macos - readarray 的替代方法,因为它在 mac os x 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23842261/

相关文章:

xcode - fatal error : limits. h:没有这样的文件或目录

macos - "Closed pull requests"在 `brew search` 的输出中是什么意思?

objective-c - NSFileManager 或 NSTask 移动文件类型

macos - 命令行压缩目录中的所有内容,但不包含任何目录作为根目录

perl - ActiveState Perl 的 Expect 替代方案

bash - sed 在一条线上工作,但不在另一条线上

perl - 为什么这没有按预期连接?

sql - 使用 postgres 重复记录

bash - 什么是 shell 变量旁边的连字符

bash - 如何通过精确搜索而不是前缀搜索来访问 bash 历史记录?