这是我的脚本:
#/bin/bash
list="a b c"
for i in $list; do
echo $i
done
这有效:
➜ ~ ./lol.sh
a
b
c
这不会:
➜ ~ . ./lol.sh
a b c
为什么 split 不适用于 dot 命令,我该如何解决?
最佳答案
列表永远不应该表示为字符串。使用数组语法。
list=( a b c )
for i in "${list[@]}"; do
echo "$i"
done
这有几个原因是可取的。
在 ZSH 中:
setopt sh_word_split
发出此请求。 ,或使用参数扩展 ${=list}
或 ${(ps: :)list}
在其他 Bourne 派生的 shell 中:
hello[world]
,如果您的当前目录包含名为 hellow
的文件,这将以意外的方式运行。 , helloo
,或以其他方式匹配 glob)。 关于shell - Zsh - 使用点运算符时按空格拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32186056/