如何将引用的参数从函数传递给另一个函数?

时间:2012-09-04 09:19:43

标签: bash

我正在编写一个我正在编写的脚本的问题...让我说我有两个函数:

function foo1 {
    while [ $# -gt 0 ]; do
        echo $1
        shift
    done
}

function foo2 {
    foo1 $@
}

我的问题如下。如果我foo1 -o "file with space.txt"输出

-o
file with space.txt

但是foo2 -o "file with space.txt"foo2 -o file\ with\ space.txt,我得到了

-o
file
with
space.txt

有没有办法让foo1从foo2收到“带有space.txt的文件”?

1 个答案:

答案 0 :(得分:5)

在函数foo2中,使用双引号:

foo1 "$@"

有关详细信息,请参阅man bash

  

当扩展发生在双引号内时,每个参数都会扩展为单独的单词。也就是说,“$ @”相当于“$ 1”“$ 2”