Pausar a execução de uma lista de comandos

Pausar a execução de uma lista de comandos

Eu tenho um arquivo que contém uma lista de comandos bash como o seguinte:

echo 'foobar'
echo 'helloworld'
echo 'ok'

E posso executar esses comandos simplesmente canalizando-os da /bin/bashseguinte forma:

cat commands | /bin/bash

Agora, como faço para pausar a execução no meio e aguardar a entrada do usuário? Usar readnão parece funcionar.

echo 'foobar'
echo 'helloworld'
read -p 'Press ENTER to continue'
echo 'ok'

Responder1

Execute assim:

/bin/bash commands

Canalizar o arquivo para bashfazer com que o arquivo viaje via stdin de bash. Nesse caso read, lendo de stdin, lê do fluxo canalizado em vez de do terminal. Isso consome echo 'ok'. Ao especificar o arquivo como um argumento para bashvocê ainda executá-lo, desta vez o stdin não é redirecionado.

Presumo que você queira executar assim. CompararQual é a diferença entre correr bash script.she ./script.sh?

informação relacionada