for i in "a" "a b"; do
echo $i;
done
回声:
a
a b
我怎样才能写出类似的东西for i in $input; do
并分配"a" "a b"
给input
?空格很重要。否则$(echo ...)
会工作。
编辑:问题不是关于文件,也不是关于一些输入,可以使用$@
.
由于您使用的是 bash,因此您可以这样做:
input=("a" "a b")
for i in "${input[@]}"; do
echo $i
done
这只能通过"$@"
命令行参数的构造可移植地完成。
但是,如果您不再需要实际的命令行参数,则可以使用set
来替换它们的内容:
input='"a" "a b"'
eval set fnord $input
shift
for i in "$@"; do
echo $i
done
您应该意识到,仅仅提出这个问题就表明您正在接近复杂程度,您应该切换到限制较少的脚本语言(Perl 和 Python 是通常的选择)。