我正在编写一个将文件推送到 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)
。