我对这个话题相当新,如果这个问题无关紧要,我道歉。我彻底搜索了网站,但没有找到答案。
我正在为大学项目制作这个shell脚本,我们使用rsync和crontab来同步文件夹。我正在尝试向用户提供自定义rsync和crontab参数的可能性,如下所示:
rsync接受-auvn。我尝试在我的.sh文件中制作folling正则表达式:
#!/bin/bash
#(...) lots of previous code
if [[ $1 =~ ^-a?u?v?n? ]]; then
if [ $1 != "-" ]; then
但它接受诸如“-x”之类的参数。你可以看到第二个 if 表明我不知道我在做什么!
crontab接受五个参数:
我并不担心crontab正则表达式(现在),但我正在努力使rsync正则表达式工作。我下载了rsync源代码以了解它们如何处理它们的选项参数,但是大多数脚本都是用C语言编写的,它超出了这个项目的范围。我也可以将用户请求的任何内容发送到rsync选项并观看它爆炸,但我想先给它一些处理。
谢谢!
答案 0 :(得分:1)
[[ $1 =~ ^-[auvn]+$ ]]
即,检查减号,然后多次检查任何“auvn”字母,直到结束。如何在命令行中进行测试:
$ [[ '-auvn' =~ ^-[auvn]+$ ]] && echo yes || echo no
yes
$ [[ '-a' =~ ^-[auvn]+$ ]] && echo yes || echo no
yes
$ [[ '-x' =~ ^-[auvn]+$ ]] && echo yes || echo no
no