$var$()在bash中是什么意思

$var$()在bash中是什么意思,bash,Bash,有人能详细解释一下这个脚本吗。 我知道它解析ps命令的输出并发布结果。 do while循环如何使用以下语法收集每个条目尚不清楚: var=$var$() 而且,done也就是说。。。非常糟糕的代码。while循环尤其具有误导性,因为它只执行一次,read读取ps输出的标题行,而其内部的awk读取其余的输入。另外,首先将ps输出放在变量中并不是真的需要-最好直接重定向或管道传输。awk中的$3z很奇怪-我不知道z应该做什么,因为没有设置该名称的变量 var=$var$(…)将var设置为变量的当

有人能详细解释一下这个脚本吗。 我知道它解析ps命令的输出并发布结果。 do while循环如何使用以下语法收集每个条目尚不清楚:
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 .....