gpt4 book ai didi

bash - 将分隔的输出读入多个 Bash 变量

转载 作者:行者123 更新时间:2023-11-29 09:04:27 25 4
gpt4 key购买 nike

这应该很简单,我以前在某个脚本中完成过,我找不到我的示例(或等效示例),今天这个问题让我精神错乱。 (即使我没有包括脚本的其余部分,这是在脚本中使用的,而不是交互式的。)

cat testfile | grep -e eth0

返回:

eth0         123.45.67.8/23                  u/u  Internet - Cable WAN

最终结果是我需要为每个元素设置变量。也就是说,就好像我是手动完成的一样:

INTF = "etho"
IPADDR = "123.45.67.8/23"
STS = "u/u"
DESC = "Internet - Cable WAN"

我以为我可以做这样的事情:

cat testfile | grep -e eth0 | awk '{print $2}' | xargs read IPADDR

cat testfile | grep -e eth0 | cut -d " " -n2 | read IPADDR

但我尝试过的任何事情都没有带来快乐....我的障碍(headblock)是什么?

编辑添加——脚本比仅仅获取一个 IP 更复杂,因为我的例子正在引导人们得出结论。这是一个基于 cron 的脚本,每分钟运行一次,它通过 8 个接口(interface)运行一个循环,并在某些警报条件下发送消息。当我使用硬编码变量运行它时,脚本的其余部分可以正常工作,我只是询问了让我感到困惑的部分。

最佳答案

因为你想设置 4 个变量,而不是做 4 次 cut,你可以像这样使用 read:

#!/bin/bash
#
read INTF IPADDR STS DESC <<< $(cat testfile | grep -e eth0)

echo $INTF
echo $IPADDR
echo $STS
echo $DESC

这将使用默认的 $IFS 在任何空白处“剪切”。

如果你想从“aaa,bbb,ccc,ddd”中删除值,
您可以在 read 之前更改 IFS 值。

例如:

IFS="," read INTF IPADDR STS DESC <<< $(cat testfile | grep -e eth0)

关于bash - 将分隔的输出读入多个 Bash 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013296/

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