BASH_REMATCH在*上失败?

时间:2019-06-05 17:09:30

标签: regex bash

我有一个非常简单的bash代码,需要处理一个字符串。我使用regexp如下:

#!/bin/bash

copyFile() {
  sourcePath=$1
  targetPath=$2

  sourceFileName=$([[ "$sourcePath" =~ ^(.+)\.(properties|xml|conf)$ ]] && echo ${BASH_REMATCH[1]})
  sourceFileExtension=$([[ "$sourcePath" =~ ^(.+)\.(properties|xml|conf)$ ]] && echo ${BASH_REMATCH[2]})

  echo "$sourceFileName, $sourceFileExtension"
}

copyFile "*.conf" "/opt/test"

当我回显$ sourceFileName的值时,我期望一个'*'。但是相反,它在执行目录中列出了我的文件。在其他情况下,它可以正常工作。

我做错了什么?

感谢一切!

0 个答案:

没有答案