
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/bash
seguinte forma:
cat commands | /bin/bash
Agora, como faço para pausar a execução no meio e aguardar a entrada do usuário? Usar read
nã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 bash
fazer 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 bash
você ainda executá-lo, desta vez o stdin não é redirecionado.
Presumo que você queira executar assim. CompararQual é a diferença entre correr bash script.sh
e ./script.sh
?