Eu sempre usei isso com grande efeito. A saída parece um pouco mais suja do que você poderia esperar primeiro.
Scott Pacote
2
Ao definir, PS4você pode ajustar o prompt de -x. Por exemplo: PS4='Line $LINENO @ $(date +%s.%N): ' bash -x script( datevai retardá-lo, embora)
Walter Tross
23
Estes também funcionam:
set-v
ou
#!/bin/bash -v
Mas -v não imprime a sequência PS4 antes de cada linha de script e não rastreia as etapas de uma instrução "for" (por exemplo) individualmente. Ele faz eco dos comentários enquanto -x não.
Aqui está um exemplo da saída usando -v:
#!/bin/bash -v# this is a commentfor i in{1..4}do
echo -n $i
done1234echo
echo hello
hello
Aqui está o resultado do mesmo script com -x:
+for i in'{1..4}'+ echo -n 11+for i in'{1..4}'+ echo -n 22+for i in'{1..4}'+ echo -n 33+for i in'{1..4}'+ echo -n 44+ echo
+ echo hello
hello
Observe que eu incluí "echo -n" para adicionar ênfase às diferenças entre -v e -x. Além disso, -v é o mesmo que "-o verbose", mas o último parece não funcionar como parte de um shebang.
set -o xtracee set +o xtracesão seus amigos (é mais detalhado do que -o verbosee a saída é para STDERR, em vez de detalhado, que parece registrar-se em STDOUT).
A inclusão set -xno próprio script habilitará a funcionalidade enquanto set +xa desabilitará. Ambos os métodos também funcionarão com o sh shell mais portátil.
set
são as opções, você pode encontrá-las nesta página de manual .#!/bin/bash -x
Respostas:
ou
no script.
Você pode desativar a opção novamente com
set +x
. Se você quiser apenas fazer alguns comandos, use um subshell: `(set -x; command1; command; ...;)fonte
PS4
você pode ajustar o prompt de-x
. Por exemplo:PS4='Line $LINENO @ $(date +%s.%N): ' bash -x script
(date
vai retardá-lo, embora)Estes também funcionam:
ou
Mas -v não imprime a sequência PS4 antes de cada linha de script e não rastreia as etapas de uma instrução "for" (por exemplo) individualmente. Ele faz eco dos comentários enquanto -x não.
Aqui está um exemplo da saída usando -v:
Aqui está o resultado do mesmo script com -x:
Observe que eu incluí "echo -n" para adicionar ênfase às diferenças entre -v e -x. Além disso, -v é o mesmo que "-o verbose", mas o último parece não funcionar como parte de um shebang.
fonte
Isso também deve funcionar:
fonte
Isso deve funcionar:
fonte
set -o xtrace
eset +o xtrace
são seus amigos (é mais detalhado do que-o verbose
e a saída é para STDERR, em vez de detalhado, que parece registrar-se em STDOUT).Veja mais dicas aqui
fonte
Existem algumas maneiras.
como a linha shebang.
A inclusão
set -x
no próprio script habilitará a funcionalidade enquantoset +x
a desabilitará. Ambos os métodos também funcionarão com o sh shell mais portátil.Se bem me lembro, o perl também tem a opção -x.
fonte
vai como
idioma = python, perl, bash -x = script do operador = nome do arquivo
espero que ajude.
fonte
-x
não tem nada a com ecoando em Python#! /bin/bash -x
faz o que você quer.fonte