我想使用--include參數傳遞給grep命令(在bash腳本中),搜索的文件擴展名。 這些文件擴展名將由用戶從命令行輸入作爲參數(第4個參數包含文件擴展名,用逗號分隔)。在bash腳本中使用grep命令將變量值傳遞給--include參數
這是我的腳本:
...
echo "Searching in ${4} files for pattern"
egrep -irn . --include=\*.{"${4}"} --exclude=\*.{class} -e "${3}"
...
我也試圖創建一個與命令的字符串,並調用EVAL,像這樣:
...
comando="egrep -irn . --include="\\*.{${4}}" --exclude=\*.{class} -e "${3}""
echo $comando
resultado=eval $comando
echo $resultado
(呼應COMANDO當我得到這個:的egrep -irn。--include = *。{wsdl,xml} --exclude = *。{class} -e texto,這正是命令行,如果在命令行中執行,則會返回一些匹配項)。
我還試圖傳遞變量與所有的包括參數:
...
argumento="\\*.{${4}}"
egrep -irn . --include=$argumento --exclude=\*.{class} -e "${3}"
...
這是怎樣的腳本是從命令行調用:
SH ./searchRecursiveIterativeEgrep.sh/TMP /測試/另一個//USR/local/aux /「texto」wsdl,xml
有關如何實現此目的的任何想法? 謝謝
用於查找文件的UNIX工具被恰當地命名爲'find',而不是'grep'。忘記你曾經見過GNU greps選項來尋找文件,因爲添加它們是一個可怕的想法(接下來是什麼 - grep選項來排序輸出?),只需使用find來查找文件和grep來** G ** lobally search對於** R ** egular ** E ** xpression在文件中並** ** ** rint匹配文本。你的生活會更簡單。 –
我想在文件中找到正則表達式,所以我需要grep。該命令按預期工作,但我無法使其與命令行中的參數一起工作。 –
a)grep不是唯一可以在文件中找到正則表達式的工具,b)我並不建議您不要使用grep在文件中查找正則表達式,我建議您不要使用grep來查找文件,因爲這是錯誤的方法,並使您的grep命令變得非常複雜。使用'find'來查找文件和'grep'(或其他工具)以在'find'找到的文件中搜索regexps。一些沿着'發現的路線。 -name'* .extension'-print0 | xargs -0 grep'regexp'。 –