0

将“@”放在某事之前(例如包含 Java 运行命令的类路径条目的文件的路径)有什么影响?

我知道这与文件内容有关,但您可以想象在 Google 上搜索它有点困难。我也找不到谈论它的联机帮助页。

4

3 回答 3

1

@字符在 Unix 命令行上没有一般意义。它已被一些流行的实用程序使用。@以 a开头的命令Makefile告诉make在执行之前不要回显该行。GNU Autoconf 将替换@- 封闭的变量,例如@srcdir@,用它们发现的替换configure

于 2012-10-23T22:16:01.837 回答
1

它在不同的程序中可能意味着不同的东西。作为惯例,命令行中的@file 可以解释为:

从文件中读取命令行选项。读取的选项将插入原始 @file 选项的位置。如果文件不存在或无法读取,则该选项将按字面意思处理,而不是删除。文件中的选项由空格分隔。通过将整个选项括在单引号或双引号中,可以在选项中包含空格字符。通过在要包含的字符前加上反斜杠,可以包含任何字符(包括反斜杠)。该文件本身可能包含额外的@file 选项;任何此类选项都将被递归处理。 来自ld@file 的文档

于 2012-10-23T22:16:50.610 回答
1

来自Bash 参考手册

shell 专门处理几个参数。这些参数只能被引用;不允许分配给他们。

(...)

@

扩展到位置参数,从一个开始。当扩展出现在双引号内时,每个参数都扩展为一个单独的单词。也就是说,“$@”等价于“$1”“$2”……。如果双引号扩展出现在一个单词中,则第一个参数的扩展与原始单词的开头部分连接,最后一个参数的扩展与原始单词的最后部分连接。当没有位置参数时,"$@" 和 $@ 扩展为空(即,它们被删除)。

(...)

您可以在任何程序的参数中使用@(at-sign)而无需转义。

如果你必须在参数中传递这样的东西$@- 你只需要转义$(美元符号)。

于 2012-10-23T22:24:40.520 回答