4

よく知られているコマンドを呼び出す bash 関数を作成したいと思いますgrep。この関数は、grep パターンをパラメーターとして受け取る必要があります。

ここで、トリッキーな部分が来ます。関数自体は、コマンドに指定された fileName パラメーターを構築しますgrep。関数を呼び出すと、grepコマンドが呼び出されているように見えますが、コンソールへの出力はまったくありません。これが私がこれまでに思いついたものです:

specialGrep() {
    evaluatedFileNamePart=$(someOtherGrepCommandThatEvaluatesAnotherPartOfThePath)

    # take function param as pattern and use constructed filename param
    grep -i '${1}' /fixedPathPart1/"$evaluatedFileNamePart"/fixedPathPart2/*.*
}

ここで何が問題なのですか?

4

2 に答える 2

3

これは、変数の参照が一重引用符によって無効になっているために発生します。これにより、「$」が文字どおりに解釈されます。

たとえば、次のようにします。

var="test"
echo "$var"    # will print test
echo '$var'    # will print $var

詳細については、変数置換、高度な Bash スクリプト ガイドを参照してください。

于 2013-08-17T06:15:41.790 に答える
3
 grep -i "${1}" /fixedPathPart1/"$evaluatedFileNamePart"/fixedPathPart2/*.*
于 2013-08-18T08:40:11.527 に答える