>>
ファイルにコマンドを追加する完全なシェルスクリプトを作成したいと思います。たとえば、エディタを使用して作成されたように、次のスクリプトを考えます。
echo Hello World, done
echo please enter the first number
read num1
echo please enter the second number
read num2
echo $num1 plus $num2 is `expr $num1 + $num2`
端末ウィンドウでecho echo Hello World, "done" >> file.sh
ファイルにすべての行を書き込もうとしました。ファイルを実行するときにターミナルが "done" キーワードを考慮しないように "done" の周りに引用符を付けました。ただし、ファイルが正しく実行されたことを確認すると、キーワード「done」に引用符はありません。そして、上記のコードの最後の行をターミナルウィンドウに入力してファイルに追加すると、すべてのファイルが表示されます。なぜ変数と式がファイルに追加されないのかecho plus is
疑問に思います。expr
デフォルトでは、ターミナルウィンドウで上記のコードを再作成したいと思います。 Ubuntu 12.04を実行しており、bashバージョンは4.2.24です。
ベストアンサー1
素晴らしいです。シェルはファイルに追加する前に文字を解釈します。
echo echo Hello World, "done" >> file.sh
シェルの解釈"
、標準から削除echo
。したがって、これを脱出する必要があります。
echo echo Hello World, \"done\" >> file.sh
またはより簡単には、内容全体をに含めます'
。
echo 'echo Hello World, "done"' >> file.sh`
そう言いましたが、何を言うのかよく分かりません。
ファイルを実行するときに端末が「完了」キーワードを考慮していないことを確認してください。
done
a 後ろの A はecho
意味がありません。新しいスクリプトは単一のテキストのみを印刷しますdone
。テストしてみてください!
同様に、
echo $num1 plus $num2 is `expr $num1 + $num2`
シェルは変数を解釈し、expr
今後ファイルに添付されます。繰り返しますが、'
。
echo 'echo $num1 plus $num2 is `expr $num1 + $num2`' >> file.sh
そう言ったのですが、なぜそんなことをしたいのかわかりません。ただテキストエディタを使用してください。'
スクリプトでテキストを使用したい場合は、これが問題になる可能性があります。