【问题标题】:How to Pass Quotes "" in a shell argument to java with argument containing white spaces如何将shell参数中的引号“”传递给java,参数包含空格
【发布时间】:2015-07-30 10:09:35
【问题描述】:

我目前正在尝试执行以下命令

./launch.sh -version 212 -file "/root/Desktop/local test/list.csv"

launch.sh 将参数分配给变量 MY_VARIABLE

分配值后,文件路径周围的引号将被删除,echo $MY_VARIABLE 给出以下结果:

./launch.sh -version 212 -file /root/Desktop/local test/list.csv

现在launch.sh 调用Java 并给出MY_VARIABLE 作为参数

但是 Java 拆分文件的参数并尝试处理 /root/Desktop/local 并最终出现错误,而它应该采用 /root/Desktop/local test/list.csv

如何在将值分配给变量时忽略 Java 参数中的空格或保留引号,以确保我提供正确的参数。

【问题讨论】:

  • 尝试像\ 一样转义空格并尝试。
  • 在这种情况下,用 \ 转义空格不起作用。结果是一样的。

标签: java bash shell csv whitespace


【解决方案1】:

您可以尝试像这样添加两个转义引号 ( \" ):

"\"/root/Desktop/local test/list.csv\""

【讨论】:

    【解决方案2】:

    有很多方法可以实现这一点。像 Steafan 所说的那样添加转义序列。或者您可以将此字符串存储到文本文件中,然后将这些值从文件中读取到字符串中

    【讨论】:

      【解决方案3】:

      如何忽略 Java 参数中的空格

        public class Arguments {
            public static void main(String[] args){ 
      
                  String together = "";
                  for(int i=0; i < args.length; i++){
                      System.out.println( args[i] );
                      together = together.concat(args[i]);
                  }
                  System.out.println(together);
      
                  for(int i=0; i < args.length; i++){
                      System.out.println( args[i] );
                  }
              }  
      }
      

      修改该代码,您可以连接任意数量的参数。之后,您可以将together 用作单个变量

      【讨论】:

        猜你喜欢
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        • 2014-12-25
        • 2022-11-14
        • 1970-01-01
        • 1970-01-01
        • 2017-10-28
        相关资源
        最近更新 更多