此问题已在此处有答案:
bash regex with quotes?(5个答案)
3天前关闭。
我有一个bash脚本experiments.sh
:
if [[ $1 =~ "^[0-9]$" ]]; then
echo true
else
echo false
fi
然后这样命名:
bash experiments.sh 8
由于这个简单的正则表达式接受任何数字,我希望输出为true
。但是脚本返回false
。这怎么可能呢?
此问题已在此处有答案:
bash regex with quotes?(5个答案)
3天前关闭。
我有一个bash脚本experiments.sh
:
if [[ $1 =~ "^[0-9]$" ]]; then
echo true
else
echo false
fi
然后这样命名:
bash experiments.sh 8
由于这个简单的正则表达式接受任何数字,我希望输出为true
。但是脚本返回false
。这怎么可能呢?
1条答案
按热度按时间yc0p9oo01#
在正则表达式中,
bash
将$1
的内容视为文字字符串^[0-9]$
,例如:简单的解决方案是删除双引号,例如:
另一种方法是将正则表达式赋给一个变量,然后在条件中引用该变量,例如:
**注意:**这是一种情况,您 * 不 * 将
$regex
用双引号括起来,否则bash
将查找$1
以包含文字字符串$regex