我有一个命令,想要从机器 A 在机器 B 上运行。如果我在本地机器 B 上运行该命令,它可以正常工作。
命令如下:
for n in `find /data1/ -name 'ini*.ext'` ; do echo cp $n "`dirname $n `/` basename $n
.ext`"; done
从机器 A,我发出此命令
ssh user@machineB for n in `find /data1/ -name 'ini*jsem'` ; do echo cp $n "`dirname $n `/` basename $n .jsem`"; done
但我得到了错误syntax error near unexpected token do
哪里出了问题?我认为这与双引号、单引号、分号有关,因为执行命令 ssh user@machineB ls
可以正常工作。因此不是身份验证或其他问题。
谢谢
答案1
问题在于您的本地 shell 正在解释部分命令。您需要引用整个命令,以便远程 shell 执行它。
ssh user@machineB 'for n in `find /data1/ -name "ini*jsem"` ; do echo cp $n "`dirname $n `/` basename $n .jsem`"; done'