2013-02-18 187 views
1

我在写一个简单的脚本来检查输入的目录路径是否存在。这是我的Bash:如果语句嵌套for循环

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 

我需要的是,如果它不是一个目录回去并再次要求文件路径。

谢谢。

回答

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 
+0

为什么不',而读file'而不是一个无限循环的?您确实需要以某种方式处理EOF情况,但是代码中缺少这一点。 – 2013-02-18 20:22:17

+1

@JonathanLeffler:好点 - 更改 – 2013-02-18 20:23:12

+0

感谢您的快速回复! – user2073860 2013-02-18 20:28:17

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