【发布时间】:2021-10-26 00:34:03
【问题描述】:
zsh中什么控制环境知道按空格分割?
我确信这很简单,但在我所有的搜索中还没有弄清楚是什么控制了它。
尝试循环遍历以空格分隔的字符串中的项目,如下所示:
s='foo bar baz'
for i in $s; do
echo "$i END"
done
# foo bar baz END
# ---
s='foo bar baz'
a=( $s )
echo ${a[0]} # (empty)
echo ${a[1]} # foo bar baz
# ---
s='foo bar baz'
IFS=' ' read a <<< $s
for i in "${a[@]}"; do
echo "$i END"
done
# foo bar baz END
不同的方法通过sh 和bash 工作,但在oh-my-zsh 的shell 中我无法用空格分隔,得到上面的结果。可能不是oh-my-zsh - 但希望了解是什么推动了这一点。
来自 bash 的工作示例:
s='foo bar baz'
for i in $s; do
echo "$i END"
done
# foo END
# bar END
# baz END
【问题讨论】:
-
您是否在询问 zsh 分词行为,以及它与 Bash / POSIX sh 上的分词行为有何不同/为何不同?
-
oh-my-zsh只是一个自定义zshshell 的框架;如果您使用的是oh-my-zsh,那么您使用的是zsh(不是bash)。zsh与大多数其他 shell 显着不同,因此您需要查找有关zsh的文档,而不是bash或任何其他 shell(更不用说oh-my-zsh,因为这只是一种自定义 @ 987654336@). -
@BenjaminW。 - 是的,以及如何让 zsh 按字分割。