Shell:在变量的参数中写...

时间:2012-06-06 23:06:33

标签: linux bash shell

for i in "a" "a b"; do
    echo $i;
done

回波:

a
a b

如何撰写for i in $input; do之类的内容并将"a" "a b"分配给input?空白很重要。否则$(echo ...)会起作用。

编辑:问题不在于文件,也不在于某些输入,可以使用$@来捕获。

2 个答案:

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