4

文字列が bash 変数の命名規則に対して有効かどうかを判断する小さな bash スクリプトを作成する必要があります。私のスクリプトは、変数名を引数として受け入れます。その引数を正規表現でgrepコマンドに渡そうとしていますが、試したすべてのことで、grepはファイルとして渡された値を開こうとします。

I tried placing it after the command as such
grep "$regex" "$1"

and also tried passing it as redirected input, both with and without quotes
grep "$regex" <"$1"

どちらの場合も、grep はそれをファイルとして開こうとします。grep コマンドに変数を渡す方法はありますか?

4

2 に答える 2

8

どちらの例も、「$1」をファイル名として解釈します。文字列を使用するには、次を使用できます

echo "$1" | grep "$regex" 

またはbash固有の「ヒア文字列」

grep "$regex" <<< "$1"

grep を使用せずに高速化することもできます

[[ $1 =~ $regex ]]  # regex syntax may not be the same as grep's

または、部分文字列をチェックするだけの場合は、

[[ $1 == *someword* ]]
于 2013-02-12T20:20:55.480 に答える
0

bash 組み込み機能を使用できます=~。このような:

if [[ "$string" =~ $regex ]] ; then 
    echo "match"
else 
    echo "dont match"
fi
于 2013-02-12T20:21:11.197 に答える