Usando sh -c no terminal

1

Eu tenho esta linha de comando que eu entro no terminal e funciona como pretendido:

dscl . -readall /Users UniqueID | awk '/^RecordName:/ {name=$2}; /^UniqueID: / {if ($2 > 500) print name}'

O que eu quero fazer é usar sh -c "insert string de comando aqui" e quando eu tento usar a instrução acima, isso me dá esses erros:

awk: syntax error at source line 1
 context is
    /^RecordName:/ >>>  {name=} <<< 
awk: illegal statement at source line 1
awk: illegal statement at source line 1

Alguma ideia de como eu corrigiria isso? Eu preciso disso para um programa no objetivo-c.

    
por John 10.10.2012 / 13:48

2 respostas

4

As aspas simples não impedem a expansão das variáveis entre aspas duplas:

$ echo "a'$RANDOM'"
a'23976'

Você pode substituir $ por \$ ou ' por '\'' :

$ sh -c "echo a b | awk '{print \}'"
b
$ sh -c 'echo a b | awk '\''{print $2}'\'
b

Ou use um heredoc:

sh -s <<'END'
echo a b | awk '{print $2}'
END
    
por 10.10.2012 / 14:10
1

Seu comando awk não tem um fechamento ' .

    
por 10.10.2012 / 13:55