替代readarray,因为它没有在Mac OS X工作 [英] alternative to readarray, because it does not work on mac os x

查看:506
本文介绍了替代readarray,因为它没有在Mac OS X工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个varsValues​​.txt文件

I have a varsValues.txt file

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

和我想创建2个数组,VAR和值。它应该包含

And I would like to create 2 arrays, vars and values. It should contain

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(帧间分体)工作。

But I would like it without readarray which does not work on Mac (os x) and IFS (interfield separater).

任何其他解决办法? AWK? perl的?我可以在我的bash脚本使用。

Any other solution? awk? perl? which I can use in my bash script.

感谢。

推荐答案

下面是awk的版本。需要注意的是的nPar 不难codeD。

Here's the awk version. Note that NPars is not hardcoded.

vars=($(awk -F= '{print $1}' varsValues.txt))
values=($(awk -F= '{print $2}' varsValues.txt))

Npars=${#vars[@]}

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

echo $people

这篇关于替代readarray,因为它没有在Mac OS X工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆