$ aと$ bを一致させるために次のコマンドを記述しましたが、値に「-」が含まれていると、エラーが発生します。どうすればそれを回避できますか?
# a="-Xmx5324m"
# b="-Xmx5324m"
#
#
# echo "$a" | grep -Fxc "$b"
grep: conflicting matchers specified
場所 --
パターンの前:
echo "$a" | grep -Fxc -- "$b"
--
は、多くのコマンド/シェル組み込みのコマンド終了オプションを指定します。その後、残りの引数は位置引数として扱われます。
@ sebasthの素晴らしい答えのほかに 、PATTERNを grep's -e
オプションでパターンとして使用するように指定できます(ここでは<<<
zsh
を使用しています) echo
の代わりに-string演算子。移植性についてはprintf '%s\n' "$a"
も参照してください)。
grep -Fxc -e "$b" <<<"$a"
または他のオプションの横にあるすべて。
grep -Fxce "$b" <<<"$a"
あなたの目標はバイトツーバイト文字列の等価比較なので、[
コマンドを使用します代わりに。
if [ "$a" = "$b" ]
または、$a
に$b
が含まれている場合は、[[...]]
ksh構成を使用します。
if [[ $a == *"$b"* ]]
または、すべてのBourneのようなシェルでよりポータブルに:
case $a in
*"$b"*) ...
esac