私はこれやろうとしている:capistranoがコマンドで `run`コマンドを渡して渡すフラグを入力として解釈するのはなぜですか?
run "echo -n 'foo' > bar.txt"
をし、bar.txtの内容がされて終わる:
-n foo \n
(実際の改行を表す\n
で)私は実行を使用しますrm -rf
のような他のコマンドでは、私の知る限り、うまく動作します。
私はこれやろうとしている:capistranoがコマンドで `run`コマンドを渡して渡すフラグを入力として解釈するのはなぜですか?
run "echo -n 'foo' > bar.txt"
をし、bar.txtの内容がされて終わる:
-n foo \n
(実際の改行を表す\n
で)私は実行を使用しますrm -rf
のような他のコマンドでは、私の知る限り、うまく動作します。
私はちょうどman echo
でこれを見つけた:
シェルによっては、本ユーティリティと似たまたは同じ、組み込みのエコーコマンドを提供することができます。とりわけ、sh(1)の組み込みエコーは-nオプションを受け入れません。組み込み(1)マニュアルページを参照してください。
私のバージョンのbashはecho
ですが、-n
フラグを尊重しているようです。デプロイメントマシンのシェルがそうでない場合、バイナリのecho
へのフルパスを使用すると、ここで必要なことができます:
run "/bin/echo -n 'foo' > bar.txt"
-nフラグがシェルによってフラグとして解釈されていないかのように見えます。コマンドラインからecho -Y hiを実行すると、出力は-Y hiになります。
はい!素晴らしい!私のbashとzshはどちらも-nフラグを取るが、 "sh"ではないと思う? –