$var$()在bash中是什么意思
有人能详细解释一下这个脚本吗。 我知道它解析ps命令的输出并发布结果。 do while循环如何使用以下语法收集每个条目尚不清楚:$var$()在bash中是什么意思,bash,Bash,有人能详细解释一下这个脚本吗。 我知道它解析ps命令的输出并发布结果。 do while循环如何使用以下语法收集每个条目尚不清楚: var=$var$() 而且,done也就是说。。。非常糟糕的代码。while循环尤其具有误导性,因为它只执行一次,read读取ps输出的标题行,而其内部的awk读取其余的输入。另外,首先将ps输出放在变量中并不是真的需要-最好直接重定向或管道传输。awk中的$3z很奇怪-我不知道z应该做什么,因为没有设置该名称的变量 var=$var$(…)将var设置为变量的当
var=$var$()
而且,
done也就是说。。。非常糟糕的代码。while循环尤其具有误导性,因为它只执行一次,read
读取ps
输出的标题行,而其内部的awk
读取其余的输入。另外,首先将ps
输出放在变量中并不是真的需要-最好直接重定向或管道传输。awk中的$3z
很奇怪-我不知道z
应该做什么,因为没有设置该名称的变量
var=$var$(…)
将var
设置为变量的当前内容加上$()
中命令的输出。但是由于此脚本中尚未设置var
,因此可以将其编写为var=$(…)
有关的含义,请参见问题中的注释。(1)第一个是唯一的字符串连接x=$y$z
将x
设置为y
的内容,并附加z
的内容。类似地,x=$y$(z)
将x
设置为y
的内容,并附加程序z
的标准输出
(2) f命令替换参见bash中没有do-while
循环,只有while
循环,参见将var
设置为var
的当前内容加上awk
一行的输出。$3z
-这个z
很奇怪。因为z
是空的,所以它什么也不做。@oivind:我已经回答了你的问题,但是以后请不要在一篇帖子中问两个问题,而是为它创建两篇帖子。但是因为这个脚本中还没有设置var:这是不正确的。赋值在循环中执行,因此var
最初仅在第一次迭代时为空。@user1934428循环只有一次迭代。身体只执行一次,为什么z
保存ps
命令的输出,因此它应该是一个带有嵌入换行符的字符串。我原以为每个输入行都会执行一次循环。@user1934428请参阅此答案的第一段。在第一行被read
读取后,awk调用将消耗所有标准输入。啊,没错!!!这显然是一个仍处于调试阶段早期的脚本。
#!/bin/bash
z=$(ps aux)
while read -r z
do
var=$var$(awk '{print "cpu_usage{process=\""$11"\", pid=\""$2"\"}", $3z}');
done <<< "$z"
curl -X POST -H "Content-Type: text/plain" --data "$var
" http://localhost:9091/metrics/job/top/instance/machine
#!/bin/sh
ps aux \
| awk 'NR > 1 { print "cpu_usage{process=\""$11"\", pid=\""$2"\"}", $3 }' \
| curl -X POST -H "Content-Type: text/plain" --data-binary @- http://localhost:9091/metrics/job/top/instance/machine
ps aux | while .....