尝试在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: \ / , # $ @ : ; " * ? < > | = + & % '"
我似乎无法找到有关在'option'说明符字符串中使用脚本变量的文档。显然必须有一些方法可以做我正在尝试做的事情,即在脚本运行时部署一个EAR文件,其名称是我选择的
答案 0 :(得分:1)
Jacl / Tcl是一种基于字符串的语言,{}
分隔符可防止变量插值,类似于UNIX shell编程中的''
。你想要这样的东西:
$AdminApp install $EARFILE "-nopreCompileJSPs -distributeApp -nouseMetaDataFromBinary -nodeployejb -verbose -appname $APPNAME -createMBeansForResources -noreloadEnabled ..."
...或:
$AdminApp install $EARFILE [list -nopreCompileJSPs -distributeApp -nouseMetaDataFromBinary -nodeployejb -verbose -appname $APPNAME -createMBeansForResources -noreloadEnabled ...]
此Tcl tutorial可能会引起人们的兴趣,特别是&#34;评估&amp;替换&#34;部分。
或者,您可以通过切换到-lang jython
来避免Jacl字符串的复杂性。
答案 1 :(得分:0)
您使用的变量必须在使用前设置。由于您没有包含任何有关您实际执行此操作的详细信息,因此我认为这是缺少的。在您的脚本中,您应该可以从以下内容开始:
# Set $APPNAME to be the first argument to this script.
set APPNAME [lindex $argv 0]
然后从那里开始。然后,您可以使用您的应用程序名称作为第一个参数运行您的jacl脚本。