RHEL 8.10
OpenSSH_8.0p1,OpenSSL 1.1.1k FIPS 2021 年 3 月 25 日
正如预期的那样,此行(包含两个嵌入命令)返回两行:
$ ssh -q remoteserver "ls -1 /proc/${p}/fd | wc -l ; ps -Ostate -p${p} | tail -n1"
969
1353432 S S ? 00:00:12 pgpool: wait for accept lock
如何将每一行存储在本地服务器上的单独变量中?(因为我必须运行ssh
数百次,并且每次都需要超过 0.25 秒,所以我试图尽量减少调用 ssh 的次数。)
目标是,例如,让变量FDcnt
具有值 969,PidState
并且1353432 S S ? 00:00:12 pgpool: wait for accept lock
。
这可行,但似乎有点太 hacking 了:
blarge=()
while read -r
do
blarge+=("$REPLY")
done <<<$(ssh -q FISPCDSPGS202c "ls -1 /proc/${p}/fd | wc -l ; ps -Ostate -p${p} | tail -n1")
echo ${blarge[0]}
970
$ echo ${blarge[1]}
1353432 S S ? 00:00:12 pgpool: fis_cds cdsbmop 10.55.96.151(33710) idle
一种方法是将值分配给数组,例如
bash
:但这样做的问题是来自的行
ssh
会受到通配符的影响。修复你自己的代码(这已经避免了通配符问题)可能会更好: