我试图创建一个脚本,它自动查找插入设备并对其进行压缩备份。不过,我无法找到如何使用expr
正确的方法:expr:正则表达式没有检测到有效表达式
#!/bin/bash
MountText=`mount`
# Show result of regex search
expr "$MountText" : '\/dev\/(sd[^a])\d on [\S]+\/[\s\S]+? type'
表达本身是\/dev\/(sd[^a])\d on [\S]+\/[\s\S]+? type
,并捕获设备名称(SD *),同时排除坐骑与SDA。
我起草了Regexr(正则表达式在链接中共享),and used what mount
dumped (gist)的正则表达式。
出于某种原因,它只是给出了这个奇怪的错误:
0
我环顾四周,我found this SO question。它对我没有太大的帮助,因为现在这意味着expr
不能识别我用来捕捉设备的括号,并且它也相信这个表达式不会捕获任何东西!
我真的很困惑。我究竟做错了什么?
正则表达式只有语言中工作,外壳使用通配符或水珠,请谷歌这些条款为您正在使用的外壳,** echo $ SHELL ** –
谢谢,没有听到任何'expr'使用globs的信息。虽然,我不明白你的意思** echo $ SHELL **,因为我在标签和hashbang中都提到了我使用的是bash。 –
@ArifBurhan另外,我检查了'man'页面,它说'expr STRING:REGEXP'使用正则表达式。 –