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 是通常的选择)。