I have came across weird behavior of Bash variable in redirection after curl command:
curl -s 'https://www.google.com' > "./out_curl_$((++i)).txt"
I created following test script ./curl_test.sh:
#!/bin/env bash
i=0
curl -s 'https://www.google.com' > "./out_curl_$((++i)).txt"
curl -s 'https://www.google.com' > "./out_curl_$((++i)).txt"
echo "This is i: ${i}"
ls -1 ./out_curl_*.txt
j=0
echo 'hello' > "./out_echo_$((++j)).txt"
echo 'hello' > "./out_echo_$((++j)).txt"
echo "This is j: ${j}"
ls -1 ./out_echo_*.txt
exit 0
Output:
$ ./curl_test.sh
This is i: 0
./out_curl_1.txt
This is j: 2
./out_echo_1.txt
./out_echo_2.txt
Expected output:
$ ./curl_test.sh
This is i: 2
./out_curl_1.txt
./out_curl_2.txt
This is j: 2
./out_echo_1.txt
./out_echo_2.txt
Please does anybody know why is that? What already tried out:
wget has the same behavior:
wget -q -O - 'https://www.google.com' > "./out_wget_$((++k)).txt"
Encapsulating curl into sub-shell ( ... ) does not help.
This 2 liner of course works:
((i++))
curl -s 'https://www.google.com' > "./out_curl_${i}.txt"
Thank You for any hints.