Em vez de usar bash
substituir o processo , você pode - de bash 4.2
on - usar shopt -s lastpipe
para evitar a subshell problema (atribuição de variável no processo filho não é visível no shell pai).
(Ainda outra maneira de evitar o problema de subshell é usar exec
e redirecionar stdin de um arquivo ou heredoc).
Se você insistir em usar ls
, use ls -1Artb
.
# file version
set +f
shopt -s nullglob dotglob
count=0
printf '%s# file version
set +f
shopt -s nullglob dotglob
count=0
printf '%s%pre%0' * > all_files
while IFS="" read -r -d "" file; do
test -z "$file" && continue
count=$(($count + 1))
#printf '%s\n' "$count: $file"
done < all_files
echo "$count"
# process substitution version
set +f
shopt -s nullglob dotglob
count=0
while IFS="" read -r -d "" file; do
test -z "$file" && continue
count=$(($count + 1))
#printf '%s\n' "$count: $file"
done < <(printf '%s%pre%0' *)
echo "$count"
0' * > all_files
while IFS="" read -r -d "" file; do
test -z "$file" && continue
count=$(($count + 1))
#printf '%s\n' "$count: $file"
done < all_files
echo "$count"
# process substitution version
set +f
shopt -s nullglob dotglob
count=0
while IFS="" read -r -d "" file; do
test -z "$file" && continue
count=$(($count + 1))
#printf '%s\n' "$count: $file"
done < <(printf '%s%pre%0' *)
echo "$count"