文件中的命令错误,但在shell上运行正常

时间:2011-10-20 02:24:45

标签: ruby shell unix ssh environment-variables

我正在尝试在脚本中运行命令,类似这样:

ssh user@host:/bin/echo > /home/path/file.log

现在,当我在命令行上运行此命令时,它工作正常,但是当放入脚本(shell或ruby)时,它会说: / bin / sh:/home/path/*.log:没有这样的文件或目录

我错过了什么吗?

谢谢!

更新

奇怪的是,当我使用putty时,即使在shell上也没有执行同样的事情。我已经验证了远程机器上存在的路径和文件正在被ssh进去。

2 个答案:

答案 0 :(得分:1)

您需要遍历文件。如果它从命令行运行,那么您的交互式shell不是标准shell。

for f in /home/path/*.log; do
     :>"$f"
done

还要注意使用null命令;在许多shell中,你根本不需要命令。您的echo会在每个文件的开头放置一条没有吸引力的空行。

如果您尝试远程运行,则需要引用它:

ssh user@remote 'for f in /home/path/*.log; do :>"$f"; done'

答案 1 :(得分:0)

我在报价时工作正常: ssh user @ host:“/ bin / echo> /home/path/file.log”