如何在 Bash 脚本文件中进行负面模式匹配?

如何在 Bash 脚本文件中进行负面模式匹配?

如果我rm main!(.tex|.pdf)在 bash 终端中输入内容,它将删除所有以 或 开头main但不以.tex或结尾的文件.pdf,从而清除 LaTeX 排字员散落的各种垃圾文件。

但是,将以下 shell 脚本放入文件中并运行后,它并没有按照我的预期执行

#!/bin/bash

rm main!(.tex|.pdf)

标记处报告了语法错误(。这是怎么回事?在 bash 脚本中执行此类操作的规范方法是什么。有没有比解决这个find问题更优雅的方法?

答案1

如果从脚本运行时该模式不起作用,请确保该extglob选项也设置为非交互式使用。

只需放

#!/usr/bin/env bash
shopt -s extglob

在脚本顶部的 hashbang 后面。这样就很容易发现。另请参阅:Glob – Greg 的维基

相关内容