linux脚本执行出现 -bash: syntax error near unexpected token `(' 语法无错 请大师指点 脚本见内

#!/bin/bash
log_dir=/home/abc/

cd $log_dir
a_1=$(find . -name a.1)
if [ "$a_1" == "./a.1" ]; then
tar -zcf abc.tar.gz a.* --exclude=a.0 --exclude=abc.tar.gz
shopt -s extgolb
rm -f !(a.0|abc.tar.gz)
fi

其中在/home/abc/下有a.0 a.1 a.2三个文件,我要把除了a.0以外的两个文件打包并删除打包前的两个文件,不加if语句没问题,加了if语句就报题目中的错,我加if是因为假如目录中只有a.0或无文件就不打包。
请大师指点!谢谢!

#!/bin/bash
log_dir=/home/abc

cd $log_dir
if [ -f a.1 ]; then
tar -zcf abc.tar.gz a.* --exclude=a.0 --exclude=abc.tar.gz
shopt -s extgolb
rm -f `ls |grep -v a.0|grep -v abc.tar.gz`
fi追问

谢谢您 不过有两点想追尾您一下 1.我原来的脚本哪儿不对?2.最后rm -f那一行貌似没有执行成功 麻烦您再指点一下 谢谢您!

追答

删除文件不对,rm不支持这种排除方式

另外判断文件存在不用这么麻烦, if 可以用 -f 判断是否普通文件

温馨提示:答案为网友推荐,仅供参考
相似回答