for i in "a" "a b"; do
echo $i;
done
回波:
a
a b
如何撰写for i in $input; do
之类的内容并将"a" "a b"
分配给input
?空白很重要。否则$(echo ...)
会起作用。
编辑:问题不在于文件,也不在于某些输入,可以使用$@
来捕获。
答案 0 :(得分:4)
由于你正在使用bash,你可以这样做:
input=("a" "a b")
for i in "${input[@]}"; do
echo $i
done
答案 1 :(得分:1)
这只能通过命令行参数的"$@"
构造进行移植。
但是,如果您不再需要实际命令行参数,则可以使用set
替换其内容:
input='"a" "a b"'
eval set fnord $input
shift
for i in "$@"; do
echo $i
done
你应该知道只是问过这个问题表明你正在接近复杂程度,你应该转向一种不那么有限的脚本语言(Perl和Python是通常的选择)。