Aqui está o meu script (para encontrar os arquivos que contêm um padrão especificado):
find . -type f \
-exec awk -v vawk="$1" '/'"$vawk"'/ {c++} c>0 { print ARGV[1]; exit 0 } END { if (! c) {exit 1}}' \{\} \;
Eu gostaria de usar meu script com um argumento §:
MyScript.sh pattern
Meu problema é que eu não conseguem colocar a $1variável awk.
Quando tento depurar meu script
bash -x MyScript.sh pattern
Aqui está a saída:
+ find . -type f -exec awk -v vawk=pattern '// {c++} c>0 {print ARGV[1] ; exit 0 } END { if (! c) {exit 1}}' '{}' ';'
A $vawkvariável parece estar vazia.
Qualquer ideia?
awkexpande as seqüências de escape do tipo C$1para que a abordagem não funcione se$1puder conter caracteres de barra invertida (comum para regexps). Você pode usar aENVIRONmatriz especial awk.