如果我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 的维基