diff --git a/SC2031.md b/SC2031.md index 50c28cf..218bfe7 100644 --- a/SC2031.md +++ b/SC2031.md @@ -18,7 +18,15 @@ n=0 while read i; do (( n+=i )); done < <(printf "%s\n" {1..10}) echo $n ``` -In `sh`, a temp file (better if fifo or fd) can be used instead of process substitution. And if it's acceptable to do it with waiting, try Here Documents. +In `sh`, temporary files, FIFOs or file descriptors can be used instead. When the output of the command can be stored to a variable before entering the loop, here documents are a preferable alternative: +```sh +n=0 +SUMMANDS="$(printf '%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n' 1 2 3 4 5 6 7 8 9 10)" +while read i; do n=$(( n + i )); done <