Ecco il mio script (per trovare i file che contengono uno schema specificato):
find . -type f \
-exec awk -v vawk="$1" '/'"$vawk"'/ {c++} c>0 { print ARGV[1]; exit 0 } END { if (! c) {exit 1}}' \{\} \;
Vorrei usare la mia sceneggiatura con un argomento §:
MyScript.sh pattern
Il mio problema è che non riesco a inserire la $1
variabile awk
.
Quando provo a eseguire il debug del mio script
bash -x MyScript.sh pattern
Ecco l'output:
+ find . -type f -exec awk -v vawk=pattern '// {c++} c>0 {print ARGV[1] ; exit 0 } END { if (! c) {exit 1}}' '{}' ';'
La $vawk
variabile sembra essere vuota.
Qualche idea?
awk
espande le sequenze di escape simili a C in$1
, quindi l'approccio non funziona se$1
può contenere caratteri di barra rovesciata (comune per regexps). InENVIRON
alternativa, è possibile utilizzare l' array speciale awk.