Como obter uma variável para o Python
Como (quando o marcador EOF
não é citado) a substituição da variável ocorre antes que o texto seja passado do heredoc para a entrada padrão do python
, você pode lançar a variável diretamente no script.
python - <<EOF
some_text = "$some_text"
EOF
Se some_text
fosse test
, o python veria some_text = "test"
. Observe, no entanto, que ele pode ser visto como uma vulnerabilidade de injeção de código. Se some_text
fosse "; import os; os.system("evil-command"); x = "
, por exemplo, o python veria:
some_text = ""; import os; os.system("evil-command"); x = ""
e execute esse comando maligno.
Se você quiser colocar seu código Python em um script sem modificações, poderá exportar sua variável.
export some_text
e use os.environ
para recuperá-lo.
some_text = os.environ['some_text']
Essa é uma abordagem muito mais saudável e segura.
Obtendo a saída do Python
Você pode usar a substituição de comando para coletar a saída do script.
output=$(
python - <<EOF
import sys;
for r in range(3):
print r
for a in range(2):
print "hello"
EOF
)
(observe que todos os caracteres da nova linha são removidos)