Eu não usaria grep
. Em vez disso, eu compararia o nome do arquivo usando o operador test
interno ( [[
.. ]]
), que pode manipular expressões regulares diretamente.
function getname(){
local fname="$1"
[[ -z "$fname" ]] && read -p "Enter a file name: " fname
until [[ "$fname" =~ ^[[:alpha:]] ]] && [[ -f "$fname" ]]
do
[[ -d $fname ]] && echo "Paths are not a legal file name."
read -p "Enter a legal file name: " fname
done
}