【发布时间】:2015-04-25 09:50:57
【问题描述】:
我正在尝试将外部变量 $time 传递给我通过 ssh 运行到另一台机器的 awk 命令。
time=...
pastusers=`ssh -n $host "last -n 10 | awk -v TIME=$time '{if ($7 > TIME) print $1}'"`
到目前为止我所做的是,我传递给 ssh 的命令自己工作,但通过 ssh 传递它会导致它失败。
我也试过了..
pastusers=`ssh -n $host "last -n 10"` | awk -v TIME=$time '{if ($7 > TIME) print $1}'
但是 ssh 调用不返回新行,所以 awk 没有得到正确的信息。 任何人都知道在我首先尝试的内容中传递一个外部变量,或者如何在我第二次尝试的内容中保留 ssh 调用中的换行符?
【问题讨论】:
-
在 awk 中,您不使用
$TIME。这不是错误,但不太可能是您想要的,即$7 > TIME -
"last -n 10 | awk -v TIME=$time '{if ($7 > $TIME) print $1}'" 行按预期工作,这不是问题。将 ssh 带入等式时,不会执行 $time。
-
尝试在 awk 脚本中打印 $TIME,看看它是否符合您的预期。 (在 awk 中,
$是前缀运算符,其操作数是整数;值是索引字段。如果操作数大于字段数,则值只是空字符串,或算术上下文中的 0。 ) -
我明白了,感谢您的洞察力!我的问题仍然存在:(。
-
更新了主要问题以反映 rici 的帮助以及我尝试过的另一件事以不同的方式失败。