bash 在 for 中正确扩展变量

jus*_*976 1 bash

像这样的东西:

for i in a1 'a2 a3'
do
  echo ${i}
done
Run Code Online (Sandbox Code Playgroud)

我的理解是正确的:

a1
a2 a3
Run Code Online (Sandbox Code Playgroud)

虽然通过放入a1 'a2 a3'变量我无法让它工作

VAR="a1 'a2 a3'"

for i in ${VAR}
do
  echo ${i}
done
Run Code Online (Sandbox Code Playgroud)

在声明中如何声明VAR或使用它for

Gil*_*not 6

使用正确的数组

\n
arr=( a1 \'a2 a3\' )\n\nfor a in "${arr[@]}"; do\n  echo "$a"\ndone\n
Run Code Online (Sandbox Code Playgroud)\n

检查如何在变量 \xc2\xb9 周围添加双引号

\n
\n

数组将数字映射到字符串。Bash >= 4 也有关联数组(将字符串映射到字符串)。
\n http://mywiki.wooledge.org/BashSheet#Arrays
\n http://mywiki.wooledge.org/BashFAQ/005
\n http://wiki.bash-hackers.org/syntax/arrays

\n
\n

\xc2\xb9 学习如何在 shell 中正确引用,这非常重要:

\n
\n

“双引号”包含空格/元字符的每个文字和每个扩展:"$var", "$(command "$var")", "${array[@]}", "a & b"。用于\'single quotes\'代码或文字$\'s: \'Costs $5 US\'ssh host \'echo "$HOSTNAME"\'. 请参阅
\n http://mywiki.wooledge.org/Quotes
\n http://mywiki.wooledge.org/Arguments
\n https://web.archive.org/web/20230224010517/https://wiki.bash -hackers.org/syntax/words
\n https://unix.stackexchange.com/questions/68694/when-is-double-quoting-necessary

\n
\n

  • ++ 用于建议数组 (2认同)