Ksh 正则表达式问题(我可以用sh很容易地做类似的脚本)。
问题很简单:当我尝试在我的正则表达式中插入$变量时,正则表达式失败。 但是当我用它的实际值替换$变量时,它工作正常。 我需要使用带有$变量的多个Ksh正则表达式,怎么做?
例子1正则表达式回应“hourra”:
#!/bin/ksh
file=BEFORE_ONE_AFTER
name="(ONE|TWO)"
if [[ $file = @(BEFORE_(ONE|TWO)_AFTER) ]] ; then
echo "hurra!"
fi
例2正则表达式失败没有回声:
#!/bin/ksh
file=BEFORE_ONE_AFTER
name="(ONE|TWO)"
if [[ $file = @(BEFORE_${name}_AFTER) ]] ; then
echo "ohde!"
fi
答案 0 :(得分:0)
在ubuntu上为我工作:
efs@efs-VirtualBox:~$ cat x.sh
#!/bin/ksh
file=BEFORE_ONE_AFTER
name="(ONE|TWO)"
if [[ $file = @(BEFORE_${name}_AFTER) ]] ; then
echo "ohde!"
fi
efs@efs-VirtualBox:~$ ./x.sh
ohde!
efs@efs-VirtualBox:~$
答案 1 :(得分:0)
使用AIX ksh,在参数周围添加引号。
#!/bin/ksh
file=BEFORE_ONE_AFTER
name="(ONE|TWO)"
if [[ $file = @(BEFORE_"${name}"_AFTER) ]] ; then
echo "ohde!"
fi
$./test.sh
ohde!
$