使用带有空格的参数从bash脚本运行maven

时间:2014-09-22 15:24:34

标签: bash maven

有脚本

   while true; 
      do
        case "$1" in
         -l | --login ) LOGIN=$2; shift 2 ;;
         -- ) shift; break ;;
         * ) break ;;
        esac
     done  
   mvn clean install -Dlogin=\"$LOGIN\"

运行此脚本: run_mvn.sh --login"管理员管理员" Maven告诉:

andrew@andrew-desktop:~/App$ ./run.sh --login "Admin Admin" 
[INFO] Scanning for projects...
[INFO] Reactor build order: 
[INFO]   Application
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Invalid task 'Admin"': you must specify a valid lifecycle phase, or a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Mon Sep 22 18:11:45 EEST 2014
[INFO] Final Memory: 4M/119M
[INFO] ------------------------------------------------------------------------

当我运行 mvn clean install -Dlogin =" Admin Admin" 时,构建成功。 谢谢!

1 个答案:

答案 0 :(得分:0)

只需引用参数扩展

即可
mvn clean install -Dlogin="$LOGIN"

mvn会将其中一个参数视为-Dlogin=Admin Admin(包括空格),并将处理单词本身的解析。

您编写代码的方式,mvn正在接收两个单独的参数-Dlogin="AdminAdmin"。转义的引号并没有阻止$LOGIN扩展进行分词,而且它们本身也是扩展的一部分。