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.