0

我正在编写的脚本有一点问题......假设我有 2 个功能:

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"or foo2 -o file\ with\ space.txt,我得到

-o
file
with
space.txt

有什么方法可以让 foo1 从 foo2 接收“带有 space.txt 的文件”?

4

1 回答 1

5

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

foo1 "$@"

详情见man bash

当扩展出现在双引号内时,每个参数都扩展为一个单独的单词。即“$@”等价于“$1”“$2”

于 2012-09-04T09:23:38.273 回答