【发布时间】:2016-02-19 11:34:32
【问题描述】:
场景。我有这个代码:
regexp="[^0-9A-Za-z]+"
while [[ $var =~ $regexp ]]
do
{
var=$(dialog --inputbox "File name (number and letters only): " 12 60 --stdout)
}
done
echo $var
条件:
变量var不应在while语句之前设置(未设置);
目标:
仅当变量具有字母数字值时才保留 while 语句。
但是如果我尝试运行它就不起作用。如果我设置变量 var,它就可以工作,例如:
regexp="[^0-9A-Za-z]+"
var="_"
while [[ $var =~ $regexp ]]
do
{
...
现在,如何在不设置变量 var 的情况下运行该代码?
【问题讨论】:
-
这里的逻辑有一个错误:您必须在
while之前初始化var,或者将这个while放入while true; ... done。匹配 1 个或多个字母数字字符的正则表达式是[0-9A-Za-z]+。
标签: regex bash shell loops while-loop