用户定义变量的“$@”扩展

用户定义变量的“$@”扩展

我试图让一个(bourne shell)变量像“$@" 因此它会生成多个单词,其中一些单词保留了空格。我尝试以多种不同的方式定义变量,但仍然无法使其工作:

#!/bin/sh

n=\"one\ two\"\ three
for i in "$n"; do
echo $i
done

我想定义变量,以便脚本one two首先输出,然后three进行下一次迭代,如果将引用的变量替换为“,就会得到这样的结果”$@”并'one two' three作为参数传递。

是 ”$@“只是魔法?

答案1

所以 bourne shell (IIRC) 不支持数组。您仍然可以使用“$@”

set -- "one two" three
for i in "${@}" ; do
    echo "$i"
done

输出:

one two
three

在 AIX 7.1 bsh 上测试。

相关内容