2

私はそれをしたいと思います:

i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_${i}.txt"'

それをジョブスケジューラにパイプします。

ただし、これは変数 i をその値で置き換えません。代わりに、これを取得します。

#!/usr/bin/env bash
myprogram -i "input_${i}.txt"

echo の -e オプションと一重引用符/二重引用符を使って少し遊んでみましたが、うまくいきませんでした。たとえば、次のようになります。

i="1"; echo -e "#!/usr/bin/env bash\nmyprogram -i \"input_${i}.txt\""
-bash: !/usr/bin/env: event not found

私の bash バージョンは 4.1.2 です。

4

3 に答える 3

0

感嘆符もエスケープしてみてください。

\!bash によって「イベント」として読み取られることはありません。

于 2013-05-29T23:21:00.170 に答える
0
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_'"${i}"'.txt"'

基本的に、補間が必要になるまで一重引用符を使用してから、一重引用符を閉じ、二重引用符を開き、補間を追加し、二重引用符を閉じ、一重引用符を再度開き、文字列を終了します。シェルでは、引用符は単語を区切りません。それらは、それらの間にある単語の一部の解釈を変更するだけです。

于 2013-05-30T00:29:22.507 に答える