Como eu redireciono a saída para um nome de arquivo variável em um loop for?

0

Como eu redireciono a saída para um nome de arquivo variável em um loop for?

Isso não funciona:

for ((j=501; j <=550; j++)); do 
curl -x http://us-wa.proxymesh.com:31280 "https://catalog.loc.gov/vwebv/search?searchArg=D${j}&searchCode=CALL%2B&searchType=1&limitTo=none&fromYear=&toYear=&limitTo=LOCA%3Dall&limitTo=PLAC%3Dall&limitTo=TYPE%3Dall&limitTo=LANG%3Dall&recCount=1000" >trial_$j_out.html 2> trial_$j_error.txt;
done

Continuo a ter o trial_.html e o trial_.txt escritos.

    
por humanitiesclinic 21.10.2017 / 13:22

1 resposta

2

Como apontado nos comentários, _ é um caractere válido em um nome de variável. O shell interpretará trial_$j_out.html e trial_$j_error.txt como consistindo em texto em torno das variáveis $j_out e $j_error .

Use ${j} , como você (desnecessariamente) fez na URL real:

for (( j=501; j<=550; j++ )); do 
    curl -x http://us-wa.proxymesh.com:31280 \
        "https://catalog.loc.gov/vwebv/search?searchArg=D$j&searchCode=CALL%2B&searchType=1&limitTo=none&fromYear=&toYear=&limitTo=LOCA%3Dall&limitTo=PLAC%3Dall&limitTo=TYPE%3Dall&limitTo=LANG%3Dall&recCount=1000" \
        >"trial_${j}_out.html" 2>"trial_${j}_error.txt"
done

Isso delimitará adequadamente o nome da variável do seguinte _ . O $j na URL não precisa de chaves, pois o caractere & não é válido como parte de um nome de variável.

    
por 21.10.2017 / 13:59