2つの二重引用符の間に引数を送信する必要があるプログラムを呼び出すbashファイルを作成しようとしています。
私のファイルの内容を見てください。
#!/bin/bash
echo ./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &
./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &
echo部分は必要なコマンドを正確に印刷しますが、実行すると(次の行)台無しになります。
この問題をどのように解決できますか?
ありがとうございます!
これが私が呼び出す方法です:
./yowsup/yowsup-cli demos --s 9999999999 "my parameter" -c yowsup/config
エコ結果:
./yowsup/yowsup-cli demos --s 9999999999 "my parameter" -c yowsup/config
通話結果:
demos: error: unrecognized arguments: parameter
エコー結果をコピーして貼り付けます。
INFO:yowsup.demos.sendclient.layer:Message sent
答え1
echo
出力でこれを表示するには、コマンドで引用符をエスケープする必要がありますが、実際のコマンドではエスケープしないでください。
#!/bin/bash
echo ./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &
./yowsup/yowsup-cli demos --s $1 "$2" -c yowsup/config &
$2
複数の単語を含む分割を防ぐために、実際のコマンドに引用符が使用されます。
答え2
私は(ほぼ)常にすべてを「echo」として引用するので、上記のようにします。
#!/bin/bash
echo "./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &"
./yowsup/yowsup-cli demos --s $1 "$2" -c yowsup/config &
@muruのソリューションとの違いは、元のechoコマンドが「バックグラウンドで」実行されることです。ここでは前景画面にエコーされますが、背景コマンドで実行されます。 (@muruはコマンドの最後にアンパサンドを表示しません。)