未附加参数变量

Parameter variable not getting appended

我有一个 UNIX shell 脚本,我在其中传递 parameters.Everything 形式的值似乎工作正常,但不是一个参数,但我可以看到它用 echo 命令打印。

脚本-:

#!/bin/bash

admPath=
admdatatype=
admeaimethod=
admprefix=
gatewayname=
enterpriseName=
userId=
password=
admFilter=

echo "$admPath"
echo "$admdatatype"
echo "$admeaimethod"
echo "$admprefix"
echo "$gatewayname"
echo "$enterpriseName"
echo "$userId"
echo "$password"
echo "$admFilter"


srvrmgr -g "$gatewayname" -e "$enterpriseName" -s gepfdevss -u "$userId" -p "$password" -c "run task for comp ADMBatchProc with admpath="$admPath", admdatatype="$admdatatype", admfilter="'$admFilter'", admeaimethod=$admeaimethod, admprefix="$admprefix"" -b >> exportLOVStatus.out

如您所见,我有一个名为 admFilter 的参数,我想将其值作为 '[List Of Values Parent (UDA).Value]=\"XRX_TEST\"' 传递。

当我执行上面的脚本时,我可以看到 echo 结果如下 -:

执行-:

./exportLOV.sh "/global/u70/globepfdev/ADM" "LOV" "Upsert" "export_ADM" "gateway" "enterpriseserver" "user" "password" \''[List Of Values Parent (UDA).Value]=\"XRX_TEST\"'\'

回显结果-:

/global/u70/globepfdev/ADM
LOV
Upsert
export_ADM
gateway
enterprise
user
password
'[List Of Values Parent (UDA).Value]=\"XRX_TEST\"'

但是因为命令是在成功连接后为服务器管理器执行的。此 admFilter 参数不是读取值。这是 run task 命令的输出 -:

run task for comp ADMBatchProc with admpath=/global/u70/globepfdev/ADM, admdatatype=LOV, admfilter=$admFilter, admeaimethod=Upsert, admprefix=export_ADM

除了 admFilter 之外,您可以看到每个其他参数都有一个与之关联的值。因为这个我被困住了任何人都可以帮助我。我怎样才能正确传递价值?谢谢

单引号防止变量被扩展。您应该将单引号放在双引号字符串中,这样它们就会按字面意思发送到 srvrmgr 命令,而不是发送到命令之外。

也不需要在 -c 参数中用双引号结束每个变量。

srvrmgr -g "$gatewayname" -e "$enterpriseName" -s gepfdevss -u "$userId" -p "$password" -c "run task for comp ADMBatchProc with admpath=$admPath, admdatatype=$admdatatype, admfilter='$admFilter', admeaimethod=$admeaimethod, admprefix=$admprefix" -b >> exportLOVStatus.out

Difference between single and double quotes in Bash