将一个特殊变量(~tilde)传递给Java程序

Anu*_*jKu 0 java unix

我正在尝试运行一个java程序,它以'〜'代字号作为命令行参数.不幸的是,当我运行程序时,我得到的是我打印的主目录,我不想要.我不知道我怎么能达到同样的目的?

public class Test {

        public static void main(String[] args) {
                System.out.println(args[0]);
        }

}
Run Code Online (Sandbox Code Playgroud)

Dao*_*Wen 8

把代字号放在单引号中:

java mypackage.MyClass '~'
Run Code Online (Sandbox Code Playgroud)

我假设您正在使用bash shell,在这种情况下~会自动扩展到您的主目录.将它放在单引号中告诉shell不要扩展它.

  • @WarriorPrince,`java`从来没有看到`~`因为[代码扩展](http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion)所以你唯一的选择(缺少可怕的hackery)是正确传递命令行参数. (12认同)
  • 或者使用反斜杠为波形符添加前缀(少一个字符:P) (2认同)