gpt4 book ai didi

linux - 如何使用shell脚本读取数组中的文件内容?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:45:20 26 4
gpt4 key购买 nike

我有一个 shell 脚本,可以将文件读入数组。它与 RHEL 完美配合,但是当我在 Ubuntu 上运行相同的脚本时出现错误。这是脚本。

file=/root/monitor.txt
while IFS=',' read -ra line ; do
echo -e "export MASTER_IP=${line[2]}" >> ~/.bashrc
source ~/.bashrc
done < $file

以上脚本在 RHEL 中完美运行。我在 Ubuntu 上运行时遇到的错误是

read: Illegal option -a

最佳答案

read -a 是一个 bash 特性,但在 Ubuntu 上 /bin/sh 指向 dash,它不支持 -a 选项。有几种方法可以解决这个问题:

  • 在 Ubuntu 上,只需将第一行更改为 #!/bin/bash(按照 Charles Duffy 的建议)在 bash 下运行脚本

  • 不用read -a,只给出一个变量列表,比如read f1 f2 f3 f4 f5 然后引用字段为$f1, $f2等。这种情况下,如果你的字段超过5个,就需要添加更多的变量,否则$f5会包含该行的其余部分。

  • 使用awk 代替read。 awk 非常适合这种现场处理任务:您可以将 while 循环替换为 awk -F, '{print "export MASTER_IP="$3}' $file >> ~/.bashrc,最后是 source ~/.bashrc

关于linux - 如何使用shell脚本读取数组中的文件内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25618823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com