2017-01-04 7 views
1

私はちょっと見てきましたが、与えられた引数が16進数のカラーコードであるかどうかを確認するための方法を見つけることができませんでした。ここで私が持っている私のコードは次のとおりです。bashのマッチした16進数のカラーコード

echo `expr match "$1" '\(#[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})\)'` 

私はファイル(hex.sh)に入れたとき、それはコード自体を返さなければならないのに対し、それは何も返しません。間違っているのですか、コードはどうすればいいのですか?

+0

* *与えられた引数は何ですか? – RomanPerekhrest

+0

私はbashファイルとして実行するので、次のようにします:sh hex.sh "#542541" –

+0

'echo'に渡す出力をキャプチャする必要はありません。 'expr' *が既に標準出力に書き込まれているので、その構文はうまくいきます。 'expr match" $ 1 "'...''で十分です。 – chepner

答えて

1

exprの一致 "$文字列" '($の正規表現')

中括弧は{}"パイプライン"文字|だけでなく、通常のブラケットが$regexp以内にエスケープする必要があり()引数。
は、以下の調整を使用します。

#!/bin/bash/ 
echo `expr match "$1" '\(#[A-Fa-f0-9]\{6\}\|#[A-Fa-f0-9]\{3\}\)'` 

テスト出力:

$ sh hex.sh "#542541" 
#542541 
+0

ありがとうございます、それは期待どおりに動作します! –

+0

@BraxtonFair、喜んで助けてください – RomanPerekhrest

関連する問題