diff --git a/SC2044.md b/SC2044.md index 61f83bb..0997fd5 100644 --- a/SC2044.md +++ b/SC2044.md @@ -5,7 +5,7 @@ ```sh for file in $(find mydir -mtime -7 -name '*.mp3') do - let count++ + (( count++ )) echo "Playing file no. $count" play "$file" done @@ -23,25 +23,13 @@ The most general fix (that requires the least amount of thinking to apply) is ha ```sh while IFS= read -r -d '' file do - let count++ + (( count++ )) echo "Playing file no. $count" play "$file" done < <(find mydir -mtime -7 -name '*.mp3' -print0) echo "Played $count files" ``` -> Equivalently: -> -> ```sh -> find mydir -mtime -7 -name '*.mp3' -print0 | while IFS= read -r -d '' file -> do -> let count++ -> echo "Playing file no. $count" -> play "$file" -> done -> echo "Played $count files" -> ``` - In usage it's very similar to the `for` loop: it gets its output from a `find` statement, it executes a shell script body, it allows updating/aggregating variables, and the variables are available when the loop ends. It requires Bash, and works with GNU, Busybox, OS X, FreeBSD and OpenBSD find, but not POSIX find. @@ -54,7 +42,7 @@ If you don't need `find` logic like `-mtime -7` and just use it to match globs r shopt -s globstar nullglob for file in mydir/**/*.mp3 do - let count++ + (( count++ )) echo "Playing file no. $count" play "$file" done