【发布时间】:2017-12-07 23:44:12
【问题描述】:
我正在创建一个小型计算器脚本,但偶然发现了一个奇怪的错误。一切似乎都有效,但当我输入以( 开头的任何内容时,一切都没有了。当我这样做时,if 给出 false 并且 else 内部的代码执行。我尝试了很多方法来重写"$input" =~ [-,+,*,/,\(,\)] 的外观,但没有任何效果。你知道为什么会发生这种情况以及如何解决这个错误吗?
#!/bin/bash
read -p "Input: " input
if [[ ! "$input" =~ ^[A-Za-z_]+$ && "$input" =~ ^[0-9] && "$input" =~ [-,+,*,/,\(,\)] ]]; then
(echo $input = $(($input))) 2>- || echo "Please, do not input ..."
else
echo "Please, do not input letters or other special symbols and type in only expressions."
fi
【问题讨论】:
-
您是否尝试过删除括号前面的反斜杠?我认为,在
[]字符匹配中,您不应该需要这些。