有脚本
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" 时,构建成功。 谢谢!
答案 0 :(得分:0)
只需引用参数扩展
即可mvn clean install -Dlogin="$LOGIN"
mvn
会将其中一个参数视为-Dlogin=Admin Admin
(包括空格),并将处理单词本身的解析。
您编写代码的方式,mvn
正在接收两个单独的参数-Dlogin="Admin
和Admin"
。转义的引号并没有阻止$LOGIN
扩展进行分词,而且它们本身也是扩展的一部分。