如何让 bash 脚本向用户询问目录,如果未找到则再次询问

如何让 bash 脚本向用户询问目录,如果未找到则再次询问

我正在编写一个将文件推送到 git 的脚本。作为安全措施,我希望在存储库路径不存在的情况下,脚本不会接受该路径。我对脚本编写还不太熟悉,所以我来到这里。我没有找到任何类似的东西,或者只看到了使用 while 和 for 循环的相同示例,但我不确定如何以我需要的方式使用它们。我尝试过:

cur='pwd'
    echo -n "Path: "
    read filepath

        if [ -e "$filepath" ]; then
            goodpath=1
        else
            goodpath=0
        if [ $goodpath = "0" ];then
        echo "Please insert a correct path"
        fi
        fi
    fi
    if [ $goodpath = "1" ]; then
    echo "path=$filepath" >> .gitpush
    echo "$Path saved in the following file: $cur/.gitpush"
    echo
    echo
    fi

当我输入一些随机内容(例如 /as/asdas/asdsa)时,它甚至不会输出“请插入正确的路径

提前致谢。

答案1

cur='pwd'
echo -n "Path: "
read filepath

    if [ ! -d $filepath ]; then
    echo "Please insert a correct path"
    sleep 1
    $cur/*yourscript*
    fi
echo "path=$filepath" >> .gitpush
echo "$Path saved in the following file: $cur/.gitpush"

您可以这样做。如果不正确,它会重新启动脚本。当然,如果这是在脚本的开头。

答案2

那么,循环如下:

filepath=
while true ; do
    read -r -p "Path: " filepath
    if [ -d "$filepath" ] ; then
        break
    fi
    echo "$filepath is not a directory..."
done
do_something_with "$filepath"

不过,您可能想考虑只从命令行读取路径($1等等),如果路径不存在则退出。这样用户就可以使用通常的命令行编辑和历史记录来输入它。

另外,在第一行,cur='pwd'您将设置cur为字符串pwd。如果您想要命令的输出pwd,则需要使用反引号:cur=`pwd`,或者更好的是$(...)cur=$(pwd)

相关内容