使用awk中的外部变量传递给bash中的ssh

时间:2015-04-25 00:15:20

标签: linux bash shell awk ssh

我试图将外部变量$ 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调用中保留换行符?

1 个答案:

答案 0 :(得分:0)

我有以下test.sh:

#! /bin/bash
host=$1
mytime=$2
pastusers=`ssh -n $host "last -n 10" | awk -v TIME=$mytime '{if($7>TIME) print $1}'`
echo $pastusers

当我运行bash test.sh <some_valid_host> 20:00时,它会按预期打印一个用户列表,所有这些都在同一行中。那些处于同一行的人也是预期的。

如果您有一个文件test.txt,如:

abc
def ghi

运行

words=`cat test.txt`; echo $words

abc def ghi全部打印在同一行。这是预期的行为。