Aquí está mi script (para encontrar los archivos que contienen un patrón específico):
find . -type f \
-exec awk -v vawk="$1" '/'"$vawk"'/ {c++} c>0 { print ARGV[1]; exit 0 } END { if (! c) {exit 1}}' \{\} \;
Me gustaría usar mi script con un argumento §:
MyScript.sh pattern
Mi problema es que no logro poner la $1
variable awk
.
Cuando intento depurar mi script
bash -x MyScript.sh pattern
Aquí está la salida:
+ find . -type f -exec awk -v vawk=pattern '// {c++} c>0 {print ARGV[1] ; exit 0 } END { if (! c) {exit 1}}' '{}' ';'
La $vawk
variable parece estar vacía.
¿Alguna idea?
awk
expande las secuencias de escape tipo C$1
, por lo que ese enfoque no funciona si$1
puede contener caracteres de barra invertida (común para expresiones regulares). Puede utilizar laENVIRON
matriz especial awk en su lugar.