将“@”放在某事之前(例如包含 Java 运行命令的类路径条目的文件的路径)有什么影响?
我知道这与文件内容有关,但您可以想象在 Google 上搜索它有点困难。我也找不到谈论它的联机帮助页。
将“@”放在某事之前(例如包含 Java 运行命令的类路径条目的文件的路径)有什么影响?
我知道这与文件内容有关,但您可以想象在 Google 上搜索它有点困难。我也找不到谈论它的联机帮助页。
该@
字符在 Unix 命令行上没有一般意义。它已被一些流行的实用程序使用。@
以 a开头的命令Makefile
告诉make
在执行之前不要回显该行。GNU Autoconf 将替换@
- 封闭的变量,例如@srcdir@
,用它们发现的替换configure
。
它在不同的程序中可能意味着不同的东西。作为惯例,命令行中的@file 可以解释为:
从文件中读取命令行选项。读取的选项将插入原始 @file 选项的位置。如果文件不存在或无法读取,则该选项将按字面意思处理,而不是删除。文件中的选项由空格分隔。通过将整个选项括在单引号或双引号中,可以在选项中包含空格字符。通过在要包含的字符前加上反斜杠,可以包含任何字符(包括反斜杠)。该文件本身可能包含额外的@file 选项;任何此类选项都将被递归处理。 来自
ld
@file 的文档
来自Bash 参考手册:
shell 专门处理几个参数。这些参数只能被引用;不允许分配给他们。
(...)
@
扩展到位置参数,从一个开始。当扩展出现在双引号内时,每个参数都扩展为一个单独的单词。也就是说,“$@”等价于“$1”“$2”……。如果双引号扩展出现在一个单词中,则第一个参数的扩展与原始单词的开头部分连接,最后一个参数的扩展与原始单词的最后部分连接。当没有位置参数时,"$@" 和 $@ 扩展为空(即,它们被删除)。
(...)
您可以在任何程序的参数中使用@(at-sign)而无需转义。
如果你必须在参数中传递这样的东西$@
- 你只需要转义$
(美元符号)。