Bash for 带空格的循环

标签 bash shell for-loop

我想做这样的事情:

COMMANDS='"ls /" "df ~" "du -hs ~/Devel/"'
for i in $COMMANDS; do
    echo $i
done

结果会是:

ls /
df ~
du -hs ~/Devel/

但我找不到空格的正确语法。

最佳答案

COMMANDS=("ls /" "df ~" "du -hs ~/Devel/")
for i in "${COMMANDS[@]}"; do 
  echo "$i"
done

这使用数组来存储命令。此功能在 kshzsh 中也可用,但在 sh 中不可用。

数组的行为类似于"$@" 参数数组。在 "${ARRAY_NAME[@]}" 上应用 for 循环(引号很重要)将为您连续提供每个项目。如果您省略引号,它们将全部混在一起并拆分为 IFS 环境变量中存在的分隔符 ('\t', '\n '' ' 默认情况下)。

关于Bash for 带空格的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32784068/

相关文章:

java - Android - 中国生肖应用程序 - 如何攻击这个

python - 如何加入这些专栏? (自动化枯燥的东西第6章练习项目)

linux - 将输出重定向到变量指定的文件

bash - 将输入字段作为数组循环

java - onClickListener()的设置方式

linux - 使用 awk 检查来自不同行的变量

shell - 如何使用 shell 脚本附加到文件中不包含特定模式的行

c++ - 如何在所有子目录中编译多文件 C++ 程序?

linux - Bash 脚本不能正常工作

linux - bash 脚本 : how to get item name on a radiolist using dialog