i hava在bash中遵循代码:
if [[ $a =~ ^[+-]?([0-9]+.?[0-9]*|[0-9]*.?[0-9]+)([DdEeQ][+-]?[0-9]+)?$ ]]; then
我该如何在TCSH中执行此操作?我尝试了:
if ( $a =~ {^[+-]?{[0-9]+.?[0-9]*|[0-9]*.?[0-9]+}{[DdEeQ][+-]?[0-9]+}?$} ) then
它不起作用。
显然不是tcsh bash bash interaly支持正则表达式。可以使用expr命令;以下测试表明|()?和 必须逃脱以不是从字面上逃脱(例如,与Perl相反)。
测试:
expr a : '(a|b)'
expr b : 'a?b'
expr aab : 'a+b'
和
expr "$a" : '^[+-]?([0-9]+.?[0-9]*|[0-9]*.?[0-9]+)([DdEeQ][+-]?[0-9]+)?$'
或
pattern='^[+-]?([0-9]+.?[0-9]*|[0-9]*.?[0-9]+)([DdEeQ][+-]?[0-9]+)?$'
if expr "$a" : "$pattern" >/dev/null; then
..
fi