我正在编写一个我正在编写的脚本的问题...让我说我有两个函数:
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的文件”?
答案 0 :(得分:5)
在函数foo2中,使用双引号:
foo1 "$@"
有关详细信息,请参阅man bash
:
当扩展发生在双引号内时,每个参数都会扩展为单独的单词。也就是说,“$ @”相当于“$ 1”“$ 2”