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

#!/bin/bashlog_dir=/home/abc/cd$log_dira_1=$(find.-namea.1)if["$a_1"=="./a.1"];thenta... #!/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或无文件就不打包。
请大师指点!谢谢!
展开
 我来答
大大虫
高粉答主

2014-06-12 · 醉心答题,欢迎关注
知道大有可为答主
回答量:4.2万
采纳率:76%
帮助的人:1.4亿
展开全部
#!/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 判断是否普通文件
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式