Bash:如果语句嵌套在for循环中

时间:2013-02-18 20:12:29

标签: bash if-statement for-loop

我正在编写一个简单的脚本来检查输入的目录路径是否存在。这就是我所拥有的

echo "Please specify complete directory path"
read file_path

for file in $file_path; do
    if [[ -d "$file" ]]; then
        echo "$file is a directory"
        break
    else
        echo "$file is not a directory, please try again."
fi
done

我需要的是,如果它不是一个目录,可以返回并再次询问文件路径。

感谢。

2 个答案:

答案 0 :(得分:1)

这个怎么样?

echo "Please specify complete directory path"

while read file; do
    if [[ -d "$file" ]]; then
        echo "$file is a directory"
        break
    fi
    echo "$file is not a directory, please try again."
done

答案 1 :(得分:0)

无需将路径拆分为其部分,使用-d测试整个路径将告诉您它是否是目录。您需要将整个测试放入while循环,直到用户正确执行:

#/bin/sh
set -e
file_path=''
while [ ! -d "$file_path" ]
do
    echo "Please specify complete directory path"
    read file_path   
    if [ ! -d "$file_path" ]
    then
        echo "$file_path is not a directory, please try again."
    fi
done

我可以像这样使用它

$ sh /tmp/test.sh 
Please specify complete directory path
foobar
foobar is not a directory, please try again.
Please specify complete directory path
/var/www
相关问题