lst*_*kov 3 shell scripting split zsh
这是我的脚本:
#/bin/bash
list="a b c"
for i in $list; do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
这有效:
? ~ ./lol.sh
a
b
c
Run Code Online (Sandbox Code Playgroud)
这不会:
? ~ . ./lol.sh
a b c
Run Code Online (Sandbox Code Playgroud)
为什么 split 不适用于 dot 命令,我该如何解决?
列表永远不应该表示为字符串。使用数组语法。
list=( a b c )
for i in "${list[@]}"; do
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
这有几个原因是可取的。
setopt sh_word_split或使用参数扩展${=list}或${(ps: :)list}hello[world],这将表现在一个意想不到的方式,如果你的当前目录包含命名的文件hellow,helloo或以其他方式匹配球)。