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

コメントで指摘したように、_変数名には有効な文字があります。シェルは変数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括弧は必要ありません。&

おすすめ記事