参数变量未得到附加



我有一个unix shell脚本,我以参数的形式传递值。所有内容似乎都很好,但对于一个参数来说却不好,但是我可以看到它用echo命令打印。p>脚本 -

#!/bin/bash
admPath=$1
admdatatype=$2
admeaimethod=$3
admprefix=$4
gatewayname=$5
enterpriseName=$6
userId=$7
password=$8
admFilter=$9
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"'

但是,由于成功LENCENTION在Server Manager执行命令。此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

请参阅bash中的单引号和双引号之间的区别

相关内容

  • 没有找到相关文章

最新更新