Como fazer o script bash perguntar se você deseja executar o próximo segmento (parte)?

2

Assim que eu executar o script bash. Dado que eu tenho

set -x

Eu observarei visualmente o que está acontecendo. Mas em certas partes, eu quero que ele pare e me pergunte se eu ainda quero continuar executando as próximas linhas.

Eu sei sobre:

set -e

que simplesmente garante que o script bash sai por erro, mas prefiro não usar isso. Em vez disso, quero apenas dividir meus códigos e fazer o script bash me perguntar de vez em quando se ele deve prosseguir ou não.

    
por slm 27.08.2014 / 10:33

2 respostas

2

Você pode usar read para scripts interativos.

Por exemplo:

echo "Do you want to continue?(yes/no)"
read input
if [ "$input" == "yes" ]
then
echo "continue"
fi

E você pode ter suas condições if para serem executadas com base no input fornecido.

EDITAR

Se você quiser usar isso em vários lugares, crie uma função e chame onde quiser a intervenção do usuário.

    
por 27.08.2014 / 10:35
1

Para obter uma confirmação, o read builtin do bash pode ser usado. Mas se você quiser fazer isso em todas as linhas, você não quer inserir mais do que uma linha em todos os lugares que você precisa.

Além disso, você não quer digitar uma resposta completa se o programa deve continuar ou não - como "sim" ou "y"; Pressionar Enter deve ser suficiente para continuar; E para parar, Pressionar Ctrl + C é fácil e claro o suficiente.

Mas agora você adiciona todas essas verificações de confirmação ao seu código - e se você quiser executá-lo apenas algumas vezes, com sem necessidade de verificações ? Certo, seria bom poder desligá-lo . Nós usamos uma variável para isso.

Você pode escrever uma função que pode ser adicionada em linhas intermediárias para isso:

#!/bin/bash

#useConfirm=true - comment out the line below like this to disable confirmation
useConfirm=true

confirm() {
   [ "$useConfirm" = true ] && read -p "Proceed? (Enter) - (^C to abort)"
}

echo a
confirm
echo b
echo c
confirm
echo d
    
por 27.08.2014 / 12:43

Tags