Mein Python-Programm program.py
druckt Text mit Leerzeichen, und mein C-Programm a.out
erwartet nur ein einzelnes Befehlszeilenargument. Warum gibt es ein unterschiedliches Verhalten zwischen diesen beiden Methoden ... d. H. Warum funktioniert Methode 1 und nicht Methode 2?C-Programm Befehlszeilenargument mit Leerzeichen
Methode 1:
# program.py
print("Hello world")
Terminal:
> ./a.out "$(python program.py)"
// Program successfully run
Methode 2:
# program.py
print("\"Hello world \"")
Terminal:
> ./a.out $(python program.py)
// Error- only one command line argument expected
... weil Ihre Kommandozeilen-Shell '$' und '(' und ')' als Teil des Befehls interpretiert und nicht Teil eines einzelnen String-Arguments ist. Verwenden Sie '' 'um Ihr Kommandozeilenargument, wie Sie es zuerst getan haben. – Jens
Sehr interessant. Im zweiten Fall erhalten Sie das erste Attribut' 'Hallo' und die zweite' Welt' '.Es scheint, dass Bash Anführungszeichen und Escapezeichen ignoriert, wenn das Ergebnis von '$()' repariert wird. – Marian