Chciałbym wyjaśnić, dlaczego Twój kod nie działa praca.
Co chcesz zrobić, to że:
arg="A B C"
python -c "print '""$arg""'"
wyjściowa:
A B C
Problemem jest to, że kod jest analizowany jako python -c "print '"$arg"'"
python -c "print '"A B C"'"
przez powłokę. Zobacz to:
arg="A B C"
python -c "print '"A B C"'"
#__________________^^^^^____
wyjściowa:
File "<string>", line 1
print 'A
SyntaxError: EOL while scanning string literal
Tu pojawia się błąd składni, ponieważ zapobiega konkatenacji przestrzenie, więc następujące B
i C"'"
są interpretowane jako dwa różne ciągi znaków, które nie są częścią łańcucha przekazywane jako polecenie do interpretera python (który pobiera tylko ciąg następujący po -c
jako polecenie).
Dla lepszego zrozumienia:
arg="ABC"
python -c "print '"$arg"'"
wyjściowa:
ABC
'python -c "print \" $ arg \ ""' pracuje dla mnie. –
lub nawet 'python -c" print '$ arg' "' –
Podświetlanie składni pokazuje problem :-) –