在尝试在Jacl脚本中运行以下命令时(在此调用之前设置了$APPNAME ):
$AdminApp install $EARFILE {-nopreCompileJSPs -distributeApp -nouseMetaDataFromBinary -nodeployejb -verbose -appname $APPNAME -createMBeansForResources -noreloadEnabled ...}我得到以下错误。
WASX7017E: Exception received while running file "deploy_myk.jacl"; exception information: com.ibm.ws.scripting.ScriptingException: WASX7108E: Invalid data specified for install task: "AppDeploymentOptions."
Errors are:
"ADMA0085E: A validation error occurred in task Specifying application options. Application name, $APPNAME, is not valid.
An application name cannot begin with a dot, cannot have leading or trailing spaces, cannot contain "]]>", and cannot contain any of the following characters: \ / , # $ @ : ; " * ? < > | = + & % '"我似乎找不到说明在“选项”说明字符串中使用脚本变量的文档。显然,必须有某种方法来完成我想要做的事情,即在脚本运行时部署一个带有我选择的名称的EAR文件
发布于 2014-05-07 15:20:55
Jacl/Tcl是一种基于字符串的语言,{}分隔符防止变量内插,类似于UNIX编程中的''。你想要这样的东西:
$AdminApp install $EARFILE "-nopreCompileJSPs -distributeApp -nouseMetaDataFromBinary -nodeployejb -verbose -appname $APPNAME -createMBeansForResources -noreloadEnabled ..."...or:
$AdminApp install $EARFILE [list -nopreCompileJSPs -distributeApp -nouseMetaDataFromBinary -nodeployejb -verbose -appname $APPNAME -createMBeansForResources -noreloadEnabled ...]这个Tcl教程可能很有趣,特别是“评估和替换”部分。
或者,您可以通过切换到-lang jython来避免Jacl字符串的复杂性。
发布于 2014-05-07 11:39:47
必须在使用变量之前设置所使用的变量。因为你还没有包括任何关于你实际做的细节,我想这就是你所缺少的。在您的脚本中,您应该能够从以下内容开始:
# Set $APPNAME to be the first argument to this script.
set APPNAME [lindex $argv 0]然后从那里出发。然后,您可以使用应用程序名称作为第一个参数来运行jacl脚本。
https://stackoverflow.com/questions/23501701
复制相似问题