$@ 和 $* 之间 bash 脚本的差异

Alb*_*rto 6 bash shell command-line-arguments

$@和之间有哪些区别$*?例如,我在这里看不到任何区别:

#! /bin/bash
echo with star: $*
echo with at sign: $@
Run Code Online (Sandbox Code Playgroud)

Gil*_*not 14

当它们没有被引用时,$@和之间没有区别$*。两者都等于$1 $2……但不要这样做。

使用双引号,"$@"将每个元素展开为参数:

"$1" "$2"

while"$*"扩展为所有元素合并为一个参数:

"$1c$2c..."

c的第一个字符在哪里IFS。如果您取消设置IFSc将是一个空格。

你几乎总是想要"$@"。数组也是如此:"${myarray[@]}"