while是否存在用于检查文件名的循环

时间:2017-02-15 14:44:55

标签: shell unix scripting

A    B    C
10   20   30
100  200  300

使用这种循环方式,当文件名不存在时,循环就存在。 但我希望循环继续,直到用户输入文件名。 请在上面的脚本中建议我应该包含哪些附加命令。

2 个答案:

答案 0 :(得分:1)

使用break退出循环

while true ; do
   echo "Enter the file name"
   read filename
   if [ -f "${filename}" ]; then
       echo "${filename} exists"
       break
   else
       echo "File name doesn't exists, so re-enter"
   fi
done
echo "Thanks for ${filename}"

或更短

while true ; do
   read -p "Enter the file name: " filename
   test -f "${filename}" && break
   echo "File name doesn't exists, so re-enter"
done
echo "Thanks for ${filename}"

答案 1 :(得分:0)

使用相同的代码快速和这样做的方法就是在无限循环中添加代码。

while :
do
    filename=""
    while [[ $filename = "" ]];do
        echo "Enter the file name"
        read filename
        if [[ -f $filename ]];then
            echo "$filename exists"
        else
            echo "File name doesn't exists, so re-enter"
        fi
    done
done

请记住,除非给出完整路径,否则这只会查看执行程序的目录。