2016-03-30 2 views
-1
currentDate="20160324" 
headerDumpFile="header.txt" 
#currentDate="$(date +’%Y%m%d’)" 
printf "Current date in dd/mm/yyyy format %s\n" $currentDate 

contId="" 
labelList="c12,playlist-play,play,pause,end,playlist-end,heartbeat,ns_st_cl" 

params="corporate=abc&user=abc&password=abc&startdate=$currentDate&site=abc&extralabels=$labelList" 
url="https://example.com/v1/start?$params" 

a=1 

while true 
do 
curl -D $headerDumpFile -v -k -H "Accept-Encoding:gzip" $url > $a.zip 
contId= cat $headerDumpFile | grep "X-CS-Continuation-Id:" | awk '{print $NF}' 

if [ "$contId" ];then 
    printf "Breaking the Loop.." 
    break; 
fi 
url="https://example.com/v1/start?$params&continuationId=${contId}" 
a=$((a + 1)) 
echo $contId 
echo $url 
done 

Когда я делаю эхо-url, его значение для параметра contId равно пустому, но когда я делаю эхо $ contId. Его распечатана правильно .Please предложитьBash Shell Issue

+0

Пожалуйста, разместите реальный код сценария, особенно строку, которая устанавливает переменную 'contId', которая сломана. – jlliagre

+0

Он становится установленным во время цикла ..... – finch986

+0

Это не так. Переменная временно очищается в subsehll (компонент конвейера), конечно, не то, что хочет сделать настоящий скрипт. – jlliagre

ответ

0

Возможно, это то, что вы хотите достичь:

contId=$(cat $headerDumpFile | grep "X-CS-Continuation-Id:" | awk '{print $NF}') 

Или проще:

contId=$(awk '/X-CS-Continuation-Id:/ {print $NF}' $headerDumpFile) 

Обратите внимание, что в отличие от того, что вы гадали, echo $contId не отображается ничего в вашем коде. То, что отображается, является результатом фиктивной линии contId= cat $headerDumpFile | grep "X-CS-Continuation-Id:" | awk '{print $NF}'.

+0

no..its не работает ... – finch986

+0

Тогда ваша логика может быть ошибочной. Вы должны указать, что содержит 'header.txt'. Трудно идти дальше, не зная об этом. – jlliagre

+0

Боюсь, что нет. Зачем вам это нужно? – jlliagre