Escribí el siguiente comando para hacer coincidir $ a con $ b, pero cuando el valor incluye "-", aparece un error. ¿Cómo puedo evitar eso?
# a="-Xmx5324m"
# b="-Xmx5324m"
#
#
# echo "$a" | grep -Fxc "$b"
grep: conflicting matchers specified
grep
special-characters
yael
fuente
fuente

grep -Fxc -- "$b" <<< "$a"evitar la tubería innecesaria[[ ... ]]ocasesería una mejor opción, ya que evita tanto las idiosincrasiasechocomo los procesos secundarios.grepcomo un carácter literal en lugar del comienzo de una opción, es decirecho test-test | grep "\-test", coincidirá en lugar de quejarse de una-tbandera desconocida .Respuestas:
Coloque
--antes de su patrón:--especifica las opciones de fin de comando para muchos comandos / funciones integradas de shell, después de lo cual los argumentos restantes se tratan como argumentos posicionales.fuente
Además de la gran respuesta de @ sebasth , podría decir que PATTERN con la
grep's -eopción de usar PATTERN como patrón (aquí usando el<<<zshoperador here-string en lugar deecho; vea también laprintf '%s\n' "$a"portabilidad).O todo al lado de otras opciones.
Como su objetivo es la comparación de igualdad de cadena byte a byte, use el
[comando en su lugar.O si
$acontiene$b, usando la[[...]]construcción ksh:O más portátil en todos los proyectiles tipo Bourne:
fuente
==no es estándar para el[comando; Es un bashismo . Usar en su=lugar.