次の例を見つけました。ここ。しかし、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
たとえば、上記の用語とMarkdown
forにアクセスしたいと思いますCFD
。
答え1
シェル(すべてのシェル)では、配列の配列は悪い考えです。他の言語が必要です。
配列はどのように定義
arr
されますか?a='domain.de;de;https' arr=(${a//;/ })
仕組みは次のとおりです。
- それぞれを
;
次のように交換します。space
- IFSが空白、タブ、改行(デフォルト)であるとします。
- 空間分割(IFSに含まれる)引用しないズーム
${...}
- 配列に割り当て
(...)
- そして配列名を
arr=
。
この定義の利点は何ですか?
いいえ、ちょうど質問です:
- 要素にスペース、タブ、または改行が含まれている場合は分割されます。
- ワイルドカードは閉じられないため、すべてまたは
*
一致するファイルに展開されます。?
[ ]
- nullglobが有効になっている場合、またはを含むすべての文字列が
*
削除さ?
れます[ ]
。 - Failglobが有効な場合、前のすべての文字はエラーを生成します。
要するに、殻を割るのは罠でいっぱいです。