将分隔输出读入多个Bash变量
发布时间:2020-12-15 21:49:51 所属栏目:安全 来源:网络整理
导读:这应该很简单,我以前在某个地方的脚本中完成它,我找不到我的例子(或等价物),今天这个问题正在驱使我走向疯狂. (即使我没有包含脚本的其余部分,这是在脚本中使用,而不是交互式.) cat testfile | grep -e eth0 返回: eth0 123.45.67.8/23 u/u Internet - Cabl
这应该很简单,我以前在某个地方的脚本中完成它,我找不到我的例子(或等价物),今天这个问题正在驱使我走向疯狂. (即使我没有包含脚本的其余部分,这是在脚本中使用,而不是交互式.)
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 但是我尝试过的任何东西都带来了欢乐……我的路障(头部挡板)是什么? 编辑添加 – 脚本比仅抓取一个IP更复杂,因为我的例子引导人们得出结论.它是一个基于cron的脚本,每分钟运行一次,它通过8个接口运行一个循环,并在某些警报条件下发送消息.当我使用硬编码变量运行它时,脚本的其余部分工作,我只是切断了关于那些让我感到烦恼的部分. 解决方法
由于您要设置4个变量,而不是执行4次变换,您可以使用如下所示的读取:
#!/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”, 例如: IFS="," read INTF IPADDR STS DESC <<< $(cat testfile | grep -e eth0) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 企业运维岗位面试:Linux服务器如何防止中木马?
- RouteReuseStrategy angular路由复用策略详解,深度刨析路由
- angularjs – 您的一些测试执行完整的页面重新加载 – 运行
- 《数据结构》第三章 栈和队列问题回收站
- bash – 为什么${@: – 1}不返回$@的最后一个元素?
- 基于angular2实现用户登录并信息持久化的一些理解(二)
- twitter-bootstrap – 如何配置webpack来运行bootstrap和sa
- 如何在bash中找到两个字符串之间的常用字符?
- 获得Karma使用SystemJS,Angular2和Typescript的问题
- 如何向我的Angular帖子请求添加标题?