Usando 'pidof' com 'sh -c'

2

Eu queria saber por que esta linha de comando não imprime pidof sh :

$ sh -c "var='pidof sh' ; echo \$var; ps -H"

Este imprime 123 como esperado

$ sh -c "var=123 ; echo \$var; ps -H"

Estou no Ubuntu Linux.

    
por abc 28.08.2011 / 01:11

1 resposta

4

Você perdeu as citações. Uma maneira de fazer isso:

sh -c "var=\"'pidof sh'\" ; echo \$var; ps -H"

Outro:

sh -c "var=\"\'pidof sh\'\" ; echo \$var; ps -H"

Observe que eles diferem no momento em que o pidof sh é executado! Na primeira versão, a expressão dentro dos backticks ( pidof sh ) é executada pelo seu shell atual - que é anterior sh -c é executado. No segundo, é o comando sh -c que executa pidof . Mais do que isso, o pidof é executado dentro de um subshell que avalia a expressão dentro dos backticks - assim você obtém um pid adicional listado na variável var . (Coloque mais simples: os backticks invocam outro shell que é então listado pelo pidof.)

Uma maneira melhor para ambos seria usar $( ... ) ou \$( ... ) .

    
por 28.08.2011 / 01:37