使用 shell 脚本从目录中删除特定文件

Remove specific file from directory using shell script

我正在尝试使用 shell 脚本编写脚本以从文件夹中删除文件。

我是 shell 脚本的新手,我尝试编写一个 shell 脚本程序来从目录中删除特定文件。 这是我尝试过的示例程序,我想从 REPORT_HOME/lib 文件夹中删除特定的 jar。

    set OLD_DIR=%cd%
echo %REPORT_HOME%
set REPORT_HOME=%REPORT_HOME%\REPORT_HOME
cd %REPORT_HOME%\lib
if [ -f antlr-2.7.7.jar ]; then
   rm -rf "antlr-2.7.7.jar"
cd %OLD_DIR%

这里REPORT_HOME是我设置的环境变量,lib是我要删除的文件夹antlr-2.7.7.jar文件

在命令提示符下,我可以直接删除特定文件,但我只想通过命令提示符下的 运行 shell 脚本删除文件。

在 运行 上面的 sh 文件之后,来自命令提示符的特定文件没有被删除。

谁能帮我解决这个问题?

提前致谢。

您混入了 Windows CMD 语法。正确的 sh 脚本看起来像

OLD_DIR=$(pwd)
echo "$REPORT_HOME"
REPORT_HOME="$REPORT_HOME/REPORT_HOME"
cd "$REPORT_HOME/lib"
if [ -f antlr-2.7.7.jar ]; then
   rm -rf "antlr-2.7.7.jar"
cd "$OLD_DIR"

然而,这太复杂了。要删除文件,只需

rm -f "$REPORT_HOME/REPORT_HOME/lib/antlr-2.7.7.jar"

-f 标志表示如果文件不存在则不报错继续(并且不询问是否有权限继续进行,否则会导致 rm 提示确认).

或许还可以看看

这假定变量 REPORT_DIR 不为空,并且不以破折号开头。为了获得最大的稳健性,请尝试

rm -f -- "${REPORT_HOME?variable must be set}/REPORT_HOME/lib/antlr-2.7.7.jar"