環境。変数は「and none」とは異なる方法でエコーされます。

環境。変数は「and none」とは異なる方法でエコーされます。

bashシェルと環境変数を学んでいます。

echo a envをテストしました。 varは引用符なしで引用符で囲みます(私はこれを端末に入れました)。

user@pc:~$ echo "$BASE_DEPENDENCIES"
build-essential \
                   cmake           \
                   debhelper       \
                   mesa-utils      \
                   cppcheck        \
                   xsltproc        \
                   python-psutil   \
                   python          \
                   bc              \
                   netcat-openbsd  \
                   gnupg2          \
                   net-tools       \
                   locales
user@pc:~$ echo $BASE_DEPENDENCIES
build-essential \ cmake \ debhelper \ mesa-utils \ cppcheck \ xsltproc \ python-psutil \ python \ bc \ netcat-openbsd \ gnupg2 \ net-tools \ locales

最初の行には新しい行とスペースがあります。 2番目には1行しかありません。

なぜこれが起こるのですか?

ちなみに、私のシステムはUbuntu 17.04です。

ベストアンサー1

一つある拡張順序bashが入力したときの作業:

拡張順序は、中かっこ拡張、引数と変数拡張、算術拡張、コマンド置換(左から右へ)です。

引用されていないバージョンは次のものを受け入れます。噴射(私のハイライト):

パラメータ拡張、コマンド置換、および算術拡張のシェルスキャン結果二重引用符内には表示されません。単語の分割に使用されます。

...デフォルトはです。これは複数の単語になるという$IFS意味です。build-essential \(newline)(other spaces)cmake ...

  • build-essential
  • \
  • cmake
  • ...

...改行文字と各空白文字内のすべての文字を効果的に削除します。

変数を引用すると、何よりも単語の分割が防止されます。

追加資料:

おすすめ記事