2015-04-25 63 views
-1

我試圖在shell腳本的find命令中構建regex表達式中使用的參數,但它似乎不起作用。在shell腳本中構建查找正則表達式參數

這個shell腳本的目標是能夠根據shell腳本中的指定參數找到一些文件。

shell腳本看起來是這樣的:

#!/bin/bash 
IDS=$1 
FOLDER="/tmp" 
MODULENAMEPATTERN=`echo $IDS | sed "s/,/|/g"` 
MODULENAMEPATTERN=".*\\.\\($MODULENAMEPATTERN\\)" 
echo "find command: find $FOLDER -follow -type f -regex \"$MODULENAMEPATTERN.suffix\"" 

for FILEFOUND in `find $FOLDER -follow -type f -regex "$MODULENAMEPATTERN.suffix"`; do 
    echo $FILEFOUND 
done; 

要啓動它,我用下面的命令:

./test pattern1,pattern2

它生成以下的輸出:

find command: /tmp -follow -type f -regex ".*\.\(pattern1\|pattern2\).suffix"

但沒有更多。

不幸的是,如果我從終端執行產生find命令,它生成以下的輸出:

/tmp/folder1/.pattern1.suffix 
/tmp/folder2/.pattern1.suffix 
/tmp/folder2/.pattern2.suffix 

我不知道究竟哪裏是我的問題。你可以幫我嗎?

Regards

回答

0

您必須在sed-expression中的管道符號之前添加反斜槓。要引用反斜槓本身,您需要

MODULENAMEPATTERN=`echo $IDS | sed "s/,/\\\\\|/g"`