【发布时间】:2019-11-16 01:30:10
【问题描述】:
我可以在一台机器(我们称之为机器A)上执行以下命令。
find /foo/bar -name "*" -type f -exec md5sum {} + | awk '{print $1}' | sort
此命令列出了/foo/bar下文件的md5s。
但是,当我将此命令附加到 ssh 命令中时
ssh -i ~/.ssh/my_key my_user@123.123.123.123 'find /foo/bar -name "*" -type f -exec md5sum {} + | awk '{print $1}' | sort'
它会产生以下错误
awk: cmd. line:1: {print
awk: cmd. line:1: ^ unexpected newline or end of string
123.123.123.123是机器A的IP地址。ssh命令是从另一台机器运行的。
是否可以将命令附加到 ssh 命令中?
我试过下面的命令,还是不行。
ssh -i ~/.ssh/my_key my_user@123.123.123.123 'find /foo/bar -name "*" -type f -exec md5sum {} + | awk \'{print $1}\' | sort'
【问题讨论】:
-
您能否尝试通过在您的代码中执行
\$来逃避awk中的$,然后让我们知道? -
使用
\$替换$会产生同样的错误信息。 -
我认为您需要转义
awk语句周围的单引号。你能试试吗? -
我试过了,但没有找到解决办法。
-
切换到双引号怎么样?喜欢
ssh -i ~/.ssh/my_key my_user@123.123.123.123 "find /foo/bar -name \"*\" -type f -exec md5sum {} + | awk '{print $1}' | sort"