Search code examples
fileshellverification

How to verify if an arg is a valid file name in Shell?


I need to verify if the args are valid file names, is this the right way to do it? It seems like I made some mistake inline 2, but I don't know where.

for i in ${@}; do                                   
if [ -f ${i}]; then                             
    echo ${i}
else continue
fi
done

Solution

  • First of all, you need a space before the closing square bracket. And you should quote your variables in case there's a space in a filename.

    for i in "${@}"; do 
    if [ -f "${i}" ]; then
        echo "${i}"
    else continue
    fi
    done
    

    The "else continue" is unnecessary, unless that's a placeholder for something else you plan to put in place of "continue".