我正在尝试制作一个使用正则表达式验证目录的bash脚本,我所拥有的如下。
echo "Ingresa La ruta de tu directorio"
read ruta
if [ $ruta != '^/[a-zA-Z]$' ];then
echo "No has ingresado una ruta valida, recuerda que la ruta inicia con /"
echo " "
continue
else
if [ -d $ruta ]; then
echo""
echo "hey, ya tienes creado tu directorio, tal vez necesites usar otra opcion"
continue
fi
fi
当我输入文档时,验证工作,但是当输入例如/Documents
它是一个现有目录时,操作是相同的并且它不验证表达式,就好像它不会进入/
.
我怎样才能正确验证表达式?
要在 bash 中测试正则表达式,您必须使用 y 运算符
=~
并且必须用双括号括[[ ]]
起来,此外,为了使脚本在版本之间更加兼容,您应该事先将正则表达式放在变量中的单引号中。(感谢@TomFenech)
至于您的正则表达式,您必须添加一个
+
or*
,[a-zA-Z]
因为如果您不这样做,它会捕获一个字符并且您想要捕获所有这些字符。(*
如果值/
单独有效,则使用)IF 看起来像这样:
这是一个简化的例子:
不需要声明它,它可以是直接的:
例子:
您可以在regex101.com上查看有关正则表达式的更多信息
我认为你有它倒退。首先检查用户是否输入了/,如果没有则发送else if。我把修改后的代码留给你。我已经尝试过了,它对我有用。