我已经创建了显示接口和每个接口IP的功能
network() {
iplst() {
ip a show "$i" | grep -oP "inet\s+\K[\w./]+" | grep -v 127
}
ip ntable | grep -oP "dev\s+\K[\w./]+"| grep -v lo | sort -u >> inf_list
netlist="inf_list"
while read -r i
do
infd=$i
paste <(echo -e $i) <(iplst)
done < $netlist
}
当前输出:
ens32 10.0.0.2/24
10.0.0.4/24
10.0.0.20/24
ens33 192.168.1.3/24
ens34 192.168.0.2/24
ens35 192.168.2.149/24
但是想避免创建临时文件, 会很感激的建议
答案 0 :(得分:3)
通常,临时文件可以替换为进程替换。例如,要避免使用inf_list
临时文件,可以使用inf_list
函数生成其内容:
build_inf_list() {
ip ntable | grep -oP "dev\s+\K[\w./]+"| grep -v lo | sort -u
}
iplst() {
ip a show "$1" | grep -oP "inet\s+\K[\w./]+" | egrep -v '^127'
}
while read -r i; do
paste <(printf '%s\n' "$i") <(iplst "$i")
done < <(build_inf_list)
一些注意事项:
<(...)
替换为文件名,当从中读取时,将返回命令...
的stdout;因此,由于您对临时文件的写入来自此类命令,因此您只需使用进程替换调用替换临时文件即可。echo -e
在其输出中未打印-e
的任何外壳都为defying black-letter POSIX。虽然bash
以这种方式不符合默认情况,但如果posix
和{{1},则不一致 } flags都设置了,然后bash符合标准的字母。使用xpg_echo
更加安全,它的定义要强得多。另请参阅链接标准文档的APPLICATION USAGE和RATIONALE部分,它解释了BSD和AT&amp; T UNIX如何具有传统上不兼容的printf
版本,以及POSIX标准在其要求的行为中如此松散的原因。 / LI>
答案 1 :(得分:0)
最终结果,谢谢@Charles Duffy
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>App1</title>
<script src="Assets/Libs/jquery-3.1.1.js"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<link href="css/default.css" rel="stylesheet" />
</head>
<body>
<h1>Works</h1>
<script src="js/main.js"></script>
</body>
</html>
编辑