新しいコンピュータにbashスクリプトを書く、コードエスケープ[重複]

新しいコンピュータにbashスクリプトを書く、コードエスケープ[重複]

どこかにそのような問題があるかもしれません。しかし、簡単に見つけることができませんでした。

デフォルトでは、新しいボックスにbashスクリプトを作成したいと思います。以前使用したスクリプトです。

例:

#!/bin/bash -ex
hi='hello world!'
echo $hi

私は常に(複数行出力用)を使用します。

cat > script.sh <<EOF
#!/bin/bash -ex
hi='hello world!'
echo $hi
EOF

しかし、$hiやその他の記号に問題があることに気づくでしょう。これを行うための良い方法はありますか?ヒントとコツ?

ベストアンサー1

ファイル終了マークを引用する必要があります。それ以外の場合は、変数の拡張(またはで始まるすべてが$現在のコンテキストを取得します)。

比較する:

hi=here
cat >file.sh <<EOF
#!/bin/sh
hi=there
echo $hi
EOF
sh file.sh

(出力here

hi=here
cat >file.sh <<\EOF
#!/bin/sh
hi=there
echo $hi
EOF
sh file.sh

出力there

hi=here
cat >file.sh <<'EOF'
#!/bin/sh
hi=there
echo $hi
EOF
sh file.sh

出力there

または、以下を引用することができます$

hi=here
cat >file.sh <<EOF
#!/bin/sh
hi=there
echo \$hi
EOF
sh file.sh

(出力there

最初は、この驚くべき動作は、さまざまな目的のために少し異なるスクリプトを生成する必要があるときに便利です。

おすすめ記事