我有一个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中的单引号和双引号之间的区别