0

尝试在 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 文件

4

2 回答 2

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 教程可能很有趣,尤其是“评估和替换”部分。

或者,您可以通过切换到-lang jython.

于 2014-05-07T15:20:55.967 回答
0

您使用的变量必须在使用前设置。由于您没有包含有关您实际执行的任何详细信息,因此我认为这是缺少的。在您的脚本中,您应该能够从以下内容开始:

# Set $APPNAME to be the first argument to this script.
set APPNAME [lindex $argv 0]

然后从那里去。然后您可以使用您的应用程序名称作为第一个参数来运行您的 jacl 脚本。

于 2014-05-07T11:39:47.247 回答