在Linux中$ * vs $ @位置variables

linux中$ *和$ @位置variables有什么区别? 我使用$ *读取某处是安全风险。 这是真的吗?

基本上它们是相同的,除非variables用双引号括起来。 然后$*扩展为单个单词, $@扩展为单独的单词。 我认为没有任何理由宣称$*是安全风险。

从bash手册页:

  * Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, it expands to a sin- gle word with the value of each parameter separated by the first character of the IFS special variable. That is, "$*" is equiva- lent to "$1c$2c...", where c is the first character of the value of the IFS variable. If IFS is unset, the parameters are sepa- rated by spaces. If IFS is null, the parameters are joined without intervening separators. @ Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "$@" is equivalent to "$1" "$2" ... If the double-quoted expansion occurs within a word, the expansion of the first parameter is joined with the begin- ning part of the original word, and the expansion of the last parameter is joined with the last part of the original word. When there are no positional parameters, "$@" and $@ expand to nothing (ie, they are removed).