我开始使用 Ubuntu 作为我的辅助操作系统,并且正在创建一个脚本,该脚本使用重定向(使用命令$sudo ifconfig -a > /etc/scripts/current-ipaddress
)将当前 IP 配置写入文件中,接下来我想要做的是使用写入该外部文件中的值之一作为下一个命令(如果可能)。
例如,假设我运行$sudo ifconfig -a > /etc/scripts/current-ipaddress
,eth0 的 IP 地址是 192.168.1.203,接下来我想使用命令将此 IP 设为静态 IP $sudo ifconfig eth0 x.x.x.x
。想法是将此 xxxx 替换为真实 IP(将从之前使用重定向写入的文件中提取)。我该如何实现这一点?
答案1
尝试这个:
theip=$(cat /etc/scripts/current-ipaddress | awk '/^eth0:/{flag = 1; next} flag == 1 && / inet / {print $2} /^[^ ]/ {flag=0}')
解释:
cat filename
:打印文件内容awk
:处理来自管道的文本输入流(文件内容)/^eth0:/{flag = 1; next}
:搜索以eth0:
标记开头并将值放入1
变量中的行flag
,然后处理下一行。flag == 1 && / inet / {print $2}
:如果变量flag
等于1
且行包含inet
标记,则打印第二个字段(默认为字段分隔符和空格)/^[^ ]/ {flag=0}
:如果行不以空格开头,则将0
值放入flag
变量中
theip=$(...command...)
:将命令标准输出放入变量中theip