インデントを使用して複数行変数に文字列値を割り当てるには?

インデントを使用して複数行変数に文字列値を割り当てるには?

質問:

  1. 変数にかなり長い値を割り当てる必要があります。
  2. 私のスクリプトのすべての行は特定の数の列の下になければなりません。

そこで複数行を使って配布してみました。

インデントがないと簡単です。

VAR="This displays without \
any issues."
echo "${VAR}"

結果:

This displays without any issues.

ただし、インデントを使用すると、次のようになります。

    VAR="This displays with \
    extra spaces."
    echo "${VAR}"

結果:

This displays with      extra spaces.

これらのスペースがなければ、どのように適切に割り当てることができますか?

ベストアンサー1

ここでの問題は、変数を二重引用符("")で囲むことです。それを削除すると、すべてがうまくいくでしょう。

    VAR="This displays with \
    extra spaces."
    echo ${VAR}

出力

 This displays with extra spaces.

ここでの問題は、二重引用符で囲まれた変数がすべての空白文字を保持することです。明示的に必要に応じて使用できます。

例えば、

$ echo "Hello     World    ........ ...            ...."

印刷する

Hello     World    ........ ...            ....

引用符を削除した後、状況は異なります。

$ echo Hello     World    ........ ...            ....
Hello World ........ ... ....

ここで Bash はテキストから余分なスペースを削除します。最初のケースでは、テキスト全体が「単一」引数として処理され、追加のスペースが保持されるためです。ただし、2番目のケースでは、echoコマンドはテキストを5つのパラメータとして受け取ります。

コマンドに引数を渡すときに変数を引用することも役立ちます。

次のコマンドはecho単一のパラメータのみを取得します。"Hello World"

$ variable="Hello World"
$ echo "$variable"

ただし、次の場合には、次のecho2つのパラメータがあります。HelloWorld

$ variable="Hello World"
$ echo $variable

おすすめ記事