免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2651 | 回复: 9
打印 上一主题 下一主题

[文件目录] rm !(${i}.ts)在脚本中执行报错? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2019-01-17 11:25 |只看该作者 |倒序浏览

RT,rm  !(${i}.ts)在终端中执行正常,但是放到脚本中报错:未预期的符号 `(' 附近有语法错误
然后我改成rm  !\(${i}.ts\),提示: 无法删除"!(1531925140000.ts)": No such file or directory,看起来把rm后边的参数当成了文件名字,
请问命令在终端直接执行和在脚本中执行有什么区别?是什么原因导致的上边情况的发生?先谢过大家了

论坛徽章:
0
2 [报告]
发表于 2019-01-17 14:54 |只看该作者
在你的脚本加上

shopt -s extglob

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
3 [报告]
发表于 2019-01-17 15:19 |只看该作者
本帖最后由 1cpuer 于 2019-01-20 08:01 编辑

!rm (${i}.ts)
rm  (${i}.ts)

!在正则中是非 or 取反

#.: for i in {1..3};do echo $i;done
1
2
3

mkdir test
touch 1 2 3 ts1
再猜一个 rm !${i}.ts or rm !$i.ts


19-01-09 续贴
#,; 2019-01-19 08:35:08 1547858108 :-10425-:/mnt/i/je-d/sou-d
#.: echo "123abc" | for i in {1..3};do $(grep -v "[1-3]");done
#,; 2019-01-19 08:35:26 1547858126 :-10426-:/mnt/i/je-d/sou-d
#.: echo "123abc" | for i in {1..3};do grep "[!1-3]";done
123abc
#,; 2019-01-19 08:41:17 1547858477 :-10427-:/mnt/i/je-d/sou-d
#.: echo "123abc" | for i in {1..3};do grep "[^1-3]";done
123abc
#,; 2019-01-19 08:41:33 1547858493 :-10428-:/mnt/i/je-d/sou-d
#.: echo "123abc" | for i in {1..3};do grep "![1-3]";done
bash: ![1-3]: event not found
#,; 2019-01-19 08:41:37 1547858497 :-10428-:/mnt/i/je-d/sou-d
#.: a=('a' 'b' 'c'); for i in ${!a[@]}; do echo $i; done
0
1
2
#,; 2019-01-19 08:45:44 1547858744 :-10429-:/mnt/i/je-d/sou-d
#.: a=('a' 'b' 'c'); for i in ${a[@]}; do echo $i; done
a
b
c
#,; 2019-01-19 08:45:48 1547858748 :-10430-:/mnt/i/je-d/sou-d
#.: a=('a' 'b' 'c'); for i in !${a[@]}; do echo $i; done
a=('a' 'b' 'c'); for i in done{a[@]}; do echo $i; done
done{a[@]}

#####
第1 -a 最后一条是 err
!${i} or !$i  
${!i} or $[!i]
linux 感叹号 shell 或与非
正则元字符没有详细解析 !

有人用 ! -name http://tieba.baidu.com/p/2768123903?traceid=

论坛徽章:
0
4 [报告]
发表于 2019-01-17 15:32 |只看该作者
!()不是正則,是 bash extended globbing

论坛徽章:
0
5 [报告]
发表于 2019-01-17 17:24 |只看该作者
回复 2# csccyab

shopt -s extglob  打开着呢

论坛徽章:
0
6 [报告]
发表于 2019-01-17 17:25 |只看该作者
回复 3# 1cpuer

我就是要删除${i}.ts名字之外的所有文件

论坛徽章:
0
7 [报告]
发表于 2019-01-17 17:54 |只看该作者
zhaopeng026 发表于 2019-01-17 17:24
回复 2# csccyab shopt -s extglob  打开着呢

在脚本打 shopt 看輸出

论坛徽章:
0
8 [报告]
发表于 2019-01-17 18:14 |只看该作者
回复 7# csccyab

多谢在脚本中将extglob打开就可以了

论坛徽章:
0
9 [报告]
发表于 2019-01-17 20:24 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2019-01-18 10:16 |只看该作者
回复 9# 本友会机友会摄友会

我使用的是标准shell  不是powershell  不过还是感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP