2017-09-28 8 views
1

필자는 매개 변수 형태로 값을 전달하는 UNIX 셸 스크립트를 가지고 있습니다. 모든 것이 제대로 작동하는 것처럼 보이지만 매개 변수 하나가 아닌 것 같습니다. 그러나 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 

당신은 내가 하나 개의 매개 변수를 불렀다 볼 수 있듯이 값이 내가 '[List Of Values Parent (UDA).Value]=\"XRX_TEST\"'로 전달하려는 admFilter. 난 스크립트 상기 실행하면

아래와 같이 결과 에코 볼 수있다 : -

실행 - :

./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

참조하십시오. 그 결과는'admfilter = " '$ admfilter'",' – Barmar

+0

@Barmar 당신이 맞으면 올바른 결과를 얻을 수 있습니다. –

답변

3

작은 따옴표로 인해 변수가 확장되지 않습니다. 작은 따옴표를 큰 따옴표로 묶어야하므로 바깥 쪽이 아닌 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