如何在 for 循环中将输出重定向到变量文件名?

如何在 for 循环中将输出重定向到变量文件名?

如何在 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

正如注释中指出的,_是变量名称中的有效字符。 shell 将把trial_$j_out.htmland解释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不需要大括号,因为该字符&作为变量名称的一部分无效。

相关内容