我可以在一台机器上执行以下命令(让我们称它为机器A)。
find /foo/bar -name "*" -type f -exec md5sum {} + | awk '{print $1}' | sort此命令列出/foo/bar下的文件的md5。
但是,当我将此命令附加到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 stringssh是计算机A的IP地址。123.123.123.123命令从另一台计算机运行。
是否可以将该命令附加到ssh命令中?
我已经尝试了以下命令,它也不起作用。
ssh -i ~/.ssh/my_key my_user@123.123.123.123 'find /foo/bar -name "*" -type f -exec md5sum {} + | awk \'{print $1}\' | sort'发布于 2019-11-15 17:46:08
awk之后的单引号终止了find之前的左单引号。
在您的示例中,您的命令中没有执行参数扩展。因此,最简单的方法是在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参数周围的每个'替换为'"'"',但这很难读懂。
发布于 2019-11-16 01:20:55
单引号字符串中不能出现(甚至转义)单引号。但它们可以出现在ANSI引用的字符串中(正确转义)。
ssh -i ~/.ssh/my_key my_user@123.123.123.123 \
$'find /foo/bar -name "*" -type f -exec md5sum {} + | awk \'{print $1}\' | sort'https://stackoverflow.com/questions/58873889
复制相似问题