0

我目前正在编写一个脚本,并且有一次我希望它检查一个文件是否已经存在。如果该文件不存在,那么它应该什么都不做。但是,如果文件确实存在,我希望出现“y”或“n”(是或否)菜单。它应该问“你想覆盖这个文件吗?”。

到目前为止,我已经尝试过写类似的东西。考虑到在此之前调用的函数:

therestore

存在。如果他们键入“y”,我希望此功能发生。无论如何,这是我尝试过的:

If [ -f directorypathANDfilename ] ; then
 read -p "A file with the same name exists, Overwrite it? Type y/n?" yesorno
    case $yesorno in
            y*)  therestore ;;
            n*)  echo "File has not been restored" ;;
    esac
fi

但是由于某种原因,菜单总是弹出,即使文件不存在并且如果我输入yes也无法正确恢复它!(但我知道“therestore”功能可以正常工作,因为我已经测试了很多次)。

为冗长的问题道歉。如果您需要更多详细信息,请告诉我 - 提前致谢!

4

1 回答 1

2

你的脚本甚至可以运行吗?对我来说,这看起来不像是有效的 bash 脚本。If不是有效的关键字,但是if是。此外,测试放在尖括号内[ ],这些不是可选的。此外,您忘记了结束fi
还有一件事,我不太清楚你在测试什么。是directorypathANDfilename变量吗?在这种情况下,您必须使用$.

该片段可能会像这样更好地工作:

#!/bin/bash

if [ -f "$directorypathANDfilename" ] ; then
 read -p "A file with the same name exists, Overwrite it? Type y/n?" yesorno
    case "$yesorno" in
            y*)  therestore ;;
            n*)  echo "File has not been restored" ;;
    esac
fi
于 2013-06-20T06:11:32.917 回答