Se houver apenas uma entrada obrigatória, use apenas echo
e um canal:
echo | python script.py
echo
imprime uma linha vazia (com nova linha) na saída padrão e, em seguida, redireciona isso para a entrada do script Python using |
. Quando o Python lê a partir da entrada padrão, ela recebe uma linha vazia e continua.
Se o script quiser mais de um clique, você pode usar o yes
command e um pipe :
yes "" | python script.py
O comando yes
imprime a mesma linha para a saída padrão repetidamente. Por padrão, a string é y
, mas aqui nós a transformamos em uma string vazia, então são apenas novas linhas para sempre.
Se a inserção for necessária como resposta a um prompt específico, e em outros momentos você precisar de informações diferentes, use expect
, que é "uma extensão Tcl que permite automatizar interações com programas interativos".
É possível escrever seu script de shell para que ele leia a saída do Python e produza uma nova entrada para ele, mas não o recomendo especialmente. Se você quiser fazer isso, consulte Redirecionamento de E / S no Guia de script avançado de bash : você precisará clonar descritores de arquivo para fazer isso. Você também pode usar mkfifo
e criar arquivos de pipe nomeados, ler e gravar neles normalmente.
Para ser honesto, eu começaria a pensar em abordagens alternativas se você estiver chegando ao ponto de fazer uma dessas abordagens: o shell script não é feito para isso e será muito mais simples escrever seu script em digamos, o próprio Python.