配列内の配列:bashの配列のさまざまな構文

配列内の配列:bashの配列のさまざまな構文

次の例を見つけました。ここ。しかし、arr配列がどのように定義されているのか理解できません。

a='domain.de;de;https'
$ arr=(${a//;/ })

この定義の利点は何ですか?

実際には、次のように配列を異なるサイズの配列に保存したいと思います。

declare -a Workspace=(
    "${Folder[0]}"  "CFD"   "General,Markdown"
    "${Folder[4]}"  "GPU"   "General,Markdown,Python,C,Java"
)

Generalたとえば、上記の用語とMarkdownforにアクセスしたいと思いますCFD

答え1

シェル(すべてのシェル)では、配列の配列は悪い考えです。他の言語が必要です。

配列はどのように定義arrされますか?

a='domain.de;de;https'
arr=(${a//;/ })

仕組みは次のとおりです。

  • それぞれを;次のように交換します。space
  • IFSが空白、タブ、改行(デフォルト)であるとします。
  • 空間分割(IFSに含まれる)引用しないズーム${...}
  • 配列に割り当て(...)
  • そして配列名をarr=

この定義の利点は何ですか?

いいえ、ちょうど質問です:

  • 要素にスペース、タブ、または改行が含まれている場合は分割されます。
  • ワイルドカードは閉じられないため、すべてまたは*一致するファイルに展開されます。?[ ]
  • nullglobが有効になっている場合、またはを含むすべての文字列が*削除さ?れます[ ]
  • Failglobが有効な場合、前のすべての文字はエラーを生成します。

要するに、殻を割るのは罠でいっぱいです。

関連情報