Existem dois diretórios especiais em todos os diretórios que seu curinga corresponde: .
e ..
. Tem certeza de que você não queria "$targetDir"/*
? Você precisaria filtrar diretórios, de qualquer maneira.
Você pode usar
[[ -d $filename ]]
para testar se o nome do arquivo é um diretório.
Além disso, a maneira usual de transformar $ RANDOM em um número no intervalo 0 - $ n, você pode usar
index=$(( RANDOM % (n + 1) ))
onde% é o operador de módulo.
Em outras palavras:
#!/bin/bash
targetDir=/home/thomas/Store/quotations
files=( "$targetDir"/* )
index=$(( RANDOM % ${#files[@]} ))
until [[ -f ${files[index]} ]] ; do
index=$(( RANDOM % ${#files[@]} ))
done
cat "${files[index]}"