在 bash 中将 awk 中的外部变量传递给 ssh
Using external variable in awk being passed to ssh in bash
我正在尝试将外部变量 $time 传递给 awk 命令,该命令通过 ssh 运行 传送到另一台机器。
time=...
pastusers=`ssh -n $host "last -n 10 | awk -v TIME=$time '{if ( > TIME) print }'"`
这是我到目前为止所做的,我传递给 ssh 的命令可以自行运行,但通过 ssh 传递它会导致它失败。
我也试过了..
pastusers=`ssh -n $host "last -n 10"` | awk -v TIME=$time '{if ( > TIME) print }'
但 ssh 调用不会 return 新行,因此 awk 无法获得正确的信息。
任何人有想法在我首先尝试的方法中传递外部变量,或者如何在我第二次尝试的方法中保留换行符?
我有以下 test.sh:
#! /bin/bash
host=
mytime=
pastusers=`ssh -n $host "last -n 10" | awk -v TIME=$mytime '{if(>TIME) print }'`
echo $pastusers
当我 运行 bash test.sh <some_valid_host> 20:00
它按预期打印用户列表,所有用户都在同一行中。那些在同一行的人也在意料之中。
如果您有一个文件test.txt,例如:
abc
def ghi
运行
words=`cat test.txt`; echo $words
将在同一行打印 abc def ghi
。这是预期的行为。
我正在尝试将外部变量 $time 传递给 awk 命令,该命令通过 ssh 运行 传送到另一台机器。
time=...
pastusers=`ssh -n $host "last -n 10 | awk -v TIME=$time '{if ( > TIME) print }'"`
这是我到目前为止所做的,我传递给 ssh 的命令可以自行运行,但通过 ssh 传递它会导致它失败。
我也试过了..
pastusers=`ssh -n $host "last -n 10"` | awk -v TIME=$time '{if ( > TIME) print }'
但 ssh 调用不会 return 新行,因此 awk 无法获得正确的信息。 任何人有想法在我首先尝试的方法中传递外部变量,或者如何在我第二次尝试的方法中保留换行符?
我有以下 test.sh:
#! /bin/bash
host=
mytime=
pastusers=`ssh -n $host "last -n 10" | awk -v TIME=$mytime '{if(>TIME) print }'`
echo $pastusers
当我 运行 bash test.sh <some_valid_host> 20:00
它按预期打印用户列表,所有用户都在同一行中。那些在同一行的人也在意料之中。
如果您有一个文件test.txt,例如:
abc
def ghi
运行
words=`cat test.txt`; echo $words
将在同一行打印 abc def ghi
。这是预期的行为。