for 루프에서 출력을 변수 파일 이름으로 리디렉션하는 방법은 무엇입니까?
이것은 작동하지 않습니다:
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
계속해서 Trial_.html과 Trial_.txt를 작성했습니다.
답변1
주석에서 지적했듯이 _
변수 이름에는 유효한 문자가 있습니다. 쉘은 변수 sum 을 둘러싼 텍스트로 구성된 것으로 trial_$j_out.html
해석합니다 .trial_$j_error.txt
$j_out
$j_error
대신 ${j}
실제 URL에서 (불필요하게) 수행하는 것처럼 사용하십시오.
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
이렇게 하면 변수 이름이 다음 이름과 올바르게 구분됩니다 _
. 해당 문자는 변수 이름의 일부로 유효하지 않으므로 URL에는 $j
중괄호가 필요하지 않습니다 .&