我想通过远程ssh执行多行shell命令。
根据https://unix.stackexchange.com/questions/1459/remote-for-loop-over-ssh,我只需要使用单引号来执行多行for循环。这是我尝试过的:
ssh user@server ‘cd ~/Data; cwd=pwd; for i in `find 201806 -name "day_*"`; do echo $i; cd $i; a.sh; cd $cwd; done’
由于什么也没发生,所以我推测有一个语法错误,我一定不能理解。 201806是Data目录中文件夹的名称,我已经测试了该命令在没有ssh user@server
的情况下可以工作。有什么建议吗?
答案 0 :(得分:1)
尝试一下
ssh -v user@server ‘cd ~/Data; cwd=`pwd`; for i in `find 201806 -name "day_*"`; do echo $i; cd $i; ./a.sh; cd $cwd; done’
还要确保您的 a.sh 文件具有执行权限。 -v 选项将提供有关其进度的调试消息。