Verwenden Sie sh -c im Terminal

563
John

Ich habe diese Befehlszeile, die ich in das Terminal eingebe und sie funktioniert wie vorgesehen:

dscl . -readall /Users UniqueID | awk '/^RecordName:/ ; /^UniqueID: / ' 

Was ich tun möchte, ist sh -c "Befehlszeichenfolge hier einfügen" und wenn ich versuche, die obige Anweisung zu verwenden, gibt es folgende Fehler:

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

Irgendeine Idee, wie ich das korrigieren würde? Ich brauche es für ein Programm in Ziel-c.

1

2 Antworten auf die Frage

4
user495470

Einfache Anführungszeichen verhindern keine variable Erweiterung innerhalb von Anführungszeichen:

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

Sie könnten ersetzen $mit \$oder 'mit '\'':

$ sh -c "echo a b | awk ''" b $ sh -c 'echo a b | awk '\'''\' b 

Oder benutze ein Heredoc:

sh -s <<'END' echo a b | awk '' END 
1
Guru

Ihr awkBefehl hat keinen Abschluss '.

Mein Fehler, ich habe einfach vergessen, das der Frage hinzuzufügen, hatte es aber in meinem Code. John vor 11 Jahren 0