【问题标题】:Why is capistrano interpreting a flag passed with a command to `run` as input?为什么 capistrano 将使用“运行”命令传递的标志解释为输入?
【发布时间】:2010-12-12 23:21:39
【问题描述】:

我正在尝试这样做:

run "echo -n 'foo' > bar.txt"

bar.txt 的内容最终是:

-n foo \n

\n 代表一个实际的换行符)

我将 run 用于其他命令,例如 rm -rf,据我所知,它运行良好。

【问题讨论】:

    标签: ruby-on-rails ruby deployment capistrano


    【解决方案1】:

    我刚刚在man echo

    某些 shell 可能提供与此实用程序相似或相同的内置 echo 命令。最值得注意的是,sh(1) 中的内置 echo 不接受 -n 选项。请查阅 builtin(1) 手册页。

    我的 bash 版本有一个 echo 内置但似乎尊重 -n 标志。看起来你的部署机器上的 shell 没有,在这种情况下,使用 echo 二进制文件的完整路径可能会在这里做你想做的事:

    run "/bin/echo -n 'foo' > bar.txt"
    

    【讨论】:

    • 是的!惊人的!我的 bash 和 zsh 都带有 -n 标志,但我猜不是“sh”?
    【解决方案2】:

    似乎 -n 标志没有被 shell 解释为标志。如果从命令行执行 echo -Y hi,输出将是 -Y hi。

    【讨论】:

      猜你喜欢
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 2011-01-24
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多