Por que essa variável não é passada para o awk? [duplicado]

0

Como eu passo essa variável abaixo?

Isso não funciona:

fname=testfile.txt
lsof | awk '/deleted/&&/$fname/ {print $4}'  *----no output*

Enquanto isso funciona:

lsof | awk '/deleted/&&/testfile.txt/ {print $4}'
3r
    
por munish 20.12.2012 / 11:38

1 resposta

1

Isso acontece porque as variáveis do shell não são expandidas entre aspas simples. Use aspas duplas, assim:

fname=testfile.txt
lsof | awk "/deleted/&&/$fname/ {print \}"

Como alternativa, você pode passá-lo como uma variável para awk em invocação usando a opção -v .

    
por 20.12.2012 / 11:43