ksh正则表达式 - 如何插入变量

时间:2014-10-29 18:25:37

标签: regex variables ksh

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

2 个答案:

答案 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!  
$