Quando você fornece ao shell um padrão de globbing que não corresponde a nenhum nome de arquivo, o padrão de globbing não será expandido. No seu caso, isso significa que o echo
no loop produz o próprio padrão.
Implementação alternativa do seu script:
cd /Users/Desktop || exit 1
for entry in txt/*.txt; do
test -e "$entry" && echo "$entry"
done
Esta implementação sairá com um código de saída diferente de zero se o cd
falhar. Em seguida, não usará pwd
, já que é desnecessário. Ele obterá uma lista de nomes que correspondem ao padrão e iterará sobre eles. Em cada iteração, ele testa para certificar-se de que há realmente algo no sistema de arquivos que possui esse nome antes de gerar o nome para a saída padrão.
Se você quiser que o echo
dentro do lop produza o caminho completo dos arquivos, use echo "/Users/Desktop/$entry"
, ou melhor:
dir="/Users/Desktop"
cd "$dir" || exit 1
for entry in txt/*.txt; do
test -e "$entry" && printf '%s/%s\n' "$dir" "$entry"
done