我有一个UNIX shell脚本,我以参数的形式传递值。一切似乎运行良好,但不是一个参数,但我可以看到它用echo命令打印。
脚本 - :
#!/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\"'
但是,在成功连接后,为服务器管理器执行命令。此admFilter
参数不是读取值。这是run task
命令的输出 - :
run task for comp ADMBatchProc with admpath=/global/u70/globepfdev/ADM, admdatatype=LOV, admfilter=$admFilter, admeaimethod=Upsert, admprefix=export_ADM
除了admFilter
之外,您可以看到每个其他参数都有与之关联的值。我被困了,因为这可以任何人帮助我。我怎样才能正确传递价值?谢谢
答案 0 :(得分:3)
单引号可防止扩展变量。你应该将单引号放在双引号字符串中,这样它们就可以直接发送到-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
参数中的每个变量周围结束双引号。
{{1}}