bash - Shell Script for loop 在第一次迭代后停止(非常简单的代码)
问题描述
我对 shell 脚本很陌生。我正在学习它的基础。我非常简单的 for 循环不起作用。它总是在第一次迭代时停止。我已经按照文档创建了一个数组变量并使用 for 循环和超级简单的代码。
#!/bin/bash
LIST=()
LIST+=('aaa')
LIST+=('bbb')
LIST+=('ccc')
for i in $LIST
do
echo '----------'$i'----------'
done
它只显示'aaa'然后停止循环。我真的不知道。请帮忙。
解决方案
$LIST
展开到 array 中的第一个元素LIST
,它与 . 基本相同${LIST[0]}
。您需要使用${LIST[@]}
双引号将每个元素作为一个单独的单词,例如:
#!/bin/bash
LIST=()
LIST+=('aaa')
LIST+=('bbb')
LIST+=('ccc')
for i in "${LIST[@]}"
do
echo '----------'"$i"'----------'
done
cf Bash 参考手册§数组
推荐阅读
- regex - 将长正则表达式拆分为多行?
- scala - 在 Scala spark 中实现动态字符串插值?
- visual-studio-code - 合并VSCode jupyter笔记本中的单元格?
- javascript - JS, let x = (Math.random()*2|0) 输出解释
- android - 哪种方式最适合在 Android 应用中播放 5 首歌曲?
- python - form_valid() 的 Django UpdateView 条件
- wpf - 样式资源中的事件未触发。为什么?
- sql-server - 为什么我无法从我的 Windows 计算机连接到 Linux MSSQL (SQLEXPRESS)?
- python - 为什么在回调排队时停止 tkinter mainloop 会导致交互模式下的错误?
- java - 如何配置 Wildfly 部署 Maven 项目