Bash因操作数预期错误而失败

时间:2015-04-18 19:34:52

标签: bash

我有这个.sh文件:

export WAS_BINARY_DIR="/opt/ibm/was"
export PROFILE_NAME="Dmgr01"
export WAS_PROFILE_DIR="/var/apps/was8nd/profiles"
export PROFILE_TYPE="management"
export CELL_NAME="Cell01"
export NODE_NAME="Cell01Node01"
export SEERVER_TYPE="DEPLOYMENT_MANAGER"
export HOST="localhost"
export START_PORT="10000"
export ADMIN_USER="wasadmin"
export ADMIN_PASSWORD="wasadmin"
$[WAS_BINARY_DIR]/bin/management.sh -create -profile $[PROFILE_NAME] -profilePath $[WAS_PROFILE_DIR]/$[PROFILE_NAME] -templatePath $[WAS_BINARY_DIR]/profileTemplates/$[PROFILE_TYPE] -serverType $[SERVER_TYPE] -cellName $[CELL_NAME] -hostName $[HOST] -nodeName $[NODE_NAME] -startingPort $[START_PORT] -isDefault -enableAdminSecurity true -adminUserName $[ADMIN_USER] -adminPassword $[ADMIN_PASSWORD]

当我运行bash -x <file>时,我明白了:

  

createDMGR_node.sh:第12行:/ opt / ibm / was:语法错误:操作数   预期(错误标记为&#34; / opt / ibm / was&#34;)

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您正在使用$[var]来引用变量var。但这不正确,如有必要,请用${}括起变量:

${WAS_BINARY_DIR}/bin/management.sh -create -profile ${PROFILE_NAME} -profilePath ...
 ^              ^                                     ^            ^

而不是

$[WAS_BINARY_DIR]/bin/management.sh -create -profile $[PROFILE_NAME] -profilePath ...

注意在这种情况下不需要${},但是引用它们是好的做法:

"$WAS_BINARY_DIR"/bin/management.sh -create -profile "$PROFILE_NAME" -profilePath ...