Bash中的“ $ @”和“ $ *”有什么区别?

在我看来,它们都存储了所有命令行参数。

两者之间有区别吗?


慕田峪4524236
浏览 1792回答 3
3回答

海绵宝宝撒

与POV的一个关键区别是"$@"保留了原始数量的参数。这是唯一的形式。例如,如果文件my_script包含:#!/bin/bashmain(){   echo 'MAIN sees ' $# ' args'}main $*main $@main "$*"main "$@"### end ###我这样运行它:my_script 'a b c' d e我将得到以下输出:MAIN sees  5  argsMAIN sees  5  argsMAIN sees  1  argsMAIN sees  3  args

qq_花开花谢_0

我假设您说的是“原谅”但指的是双引号。“ $ *”和$ *之间的区别在于,引号将$ *的扩展名保留为单个字符串,而没有引号的情况下,会将$ *的部分视为单独的项。这是双引号的一般含义;该行为并非特定于$ *和$ @。顺便说一句,单引号和双引号之间的区别在于替换(例如$ *的扩展)在双引号中执行,但不在单引号中执行。(“ $ *”的结果只是$ *,即2个字符的字面值。)
打开App,查看更多内容
随时随地看视频慕课网APP