假设我有一个目录/etc/php5/conf.d/
,其中包含以下假设文件:
mysql.ini
mysqli.ini
20-mysql.ini
20-mysqli.ini
20-pdo_mysql.ini
我想删除除最后一个(pdo
)之外的所有这些文件,这是我目前拥有的:
for phpIni in mysql mysqli; do
if [[ -f /etc/php5/conf.d/$phpIni.ini ]]; then
rm /etc/php5/conf.d/$phpIni.ini
if [[ -f /etc/php5/conf.d/20-$phpIni.ini ]]; then
rm /etc/php5/conf.d/20-$phpIni.ini
fi
done
它有效,但我不禁注意到上面可以用 glob 模式简化,例如:
if [[ ! -z /etc/php5/conf.d/{,20-}mysql*ini ]]; then
rm /etc/php5/conf.d/{,20-}mysql*ini
fi
但是有一个问题,如果任何扩展不存在,rm
就会抱怨它:
$ if [[ ! -z /etc/php5/conf.d/{,20-}mysql*ini ]]; then rm /etc/php5/conf.d/{,20-}mysql*ini; fi
rm: cannot remove `/etc/php5/conf.d/20-mysql*ini': No such file or directory
如何使 rm 仅删除现有文件?或者至少防止它抛出所有这些错误?