[tla ~]$ touch file1 file2 space\ file
[tla ~]$ ( test() { ls $*; }; test file1 file2 space\ file )
ls: cannot access space: No such file or directory
ls: cannot access file: No such file or directory
file1 file2
[tla ~]$ ( test() { ls $@; }; test file1 file2 space\ file )
ls: cannot access space: No such file or directory
ls: cannot access file: No such file or directory
file1 file2
[tla ~]$ ( test() { ls "$*"; }; test file1 file2 space\ file )
ls: cannot access file1 file2 space file: No such file or directory
[tla ~]$ ( test() { ls "$@"; }; test file1 file2 space\ file )
file1 file2 space file
你需要使用:
在所有情况下正确的参数扩展。这种行为在 bash 和 ksh 中是相同的。
大多数时候,$* 或 $@ 会给你你想要的。但是,它们使用空格扩展参数。"$*" 将所有参数减少到一个。"$@" 为您提供实际传递给包装脚本的内容。
自己看看(同样,在 bash 或 ksh 下):
我认为您正在寻找 $* 变量: http ://www.well.ox.ac.uk/~johnb/comp/unix/ksh.html#commandlineargs
我认为它在 bash 中也称为 $@ 。
是的。使用 $* 变量。试试这个脚本:
然后使用以下内容调用脚本:
您的输出将是: