Se eu inserir a opção bash -x , ele mostrará toda a linha. Mas o script será executado normalmente.
Como posso executar linha por linha? Então eu posso ver se ele faz a coisa certa, ou aborta e conserto o bug. O mesmo efeito é colocado read
em cada linha.
Respostas:
Você não precisa colocar uma leitura em todas as linhas, apenas adicione uma armadilha como a seguinte em seu script bash, tem o efeito que você deseja, por exemplo.
Funciona, apenas testei com bash v4.2.8 e v3.2.25.
VERSÃO MELHORADA
Se o seu script estiver lendo conteúdo de arquivos, o listado acima não funcionará. Uma solução alternativa pode ser semelhante ao exemplo a seguir.
Para parar o script, você teria que eliminá-lo de outro shell neste caso.
ALTERNATIVA 1
Se você simplesmente deseja esperar alguns segundos antes de prosseguir para o próximo comando em seu script, o exemplo a seguir pode funcionar para você.
Estou adicionando set + xe set -x no comando trap para tornar a saída mais legível.
fonte
trap 'read -u1' debug
para substituir o problema de redirecionamento de leitura de arquivo.Talvez o BASH Debugger seja algo para você.
fonte
apt-get install bashdb
. Então você só precisa executarbashdb your_command.sh
, digitarstep
e clicar em retorno de carro depois disso.brew install bashdb
Se o seu script bash é realmente um monte de comandos únicos que você deseja executar um por um, você poderia fazer algo assim, que executa cada comando um por um quando você incrementa uma variável
LN
, correspondendo ao número da linha que deseja executar . Isso permite que você apenas execute o último comando novamente de forma super fácil, e então você apenas incremente a variável para ir para o próximo comando.Assumindo que seus comandos estão em um arquivo "it.sh", execute o seguinte, um por um.
fonte
Dê uma olhada em bash-stepping-xtrace .
Ele permite o stepping xtrace.
fonte
xargs: pode filtrar linhas
fonte