Örneğin, basit bir bash dosyam var
#!/bin/bash
cd ~/hello
ls
Yürütmeden önce her komutu nasıl görüntüleyebilirim? Windows toplu komut dosyasında "@echo off" ters etkisi.
bash -x script
veya
set -x
komut dosyasında.
set +x
İle seçeneği tekrar ayarlayabilirsiniz. Sadece birkaç komut için yapmak istiyorsanız bir alt kabuk kullanabilirsiniz: `(set -x; command1; command; ...;)
Bunlar da işe yarıyor:
set -v
veya
#!/bin/bash -v
Ancak -v, PS4 dizesini her komut satırı satırından önce yazdırmaz ve "for" ifadesinin (örneğin) adımlarını ayrı ayrı izlemez. -X yapmazken yorumları yankılar.
İşte -v kullanarak çıktıya bir örnek:
#!/bin/bash -v
# this is a comment
for i in {1..4}
do
echo -n $i
done
1234echo
echo hello
hello
-X ile aynı betiğin sonucu:
+ for i in '{1..4}'
+ echo -n 1
1+ for i in '{1..4}'
+ echo -n 2
2+ for i in '{1..4}'
+ echo -n 3
3+ for i in '{1..4}'
+ echo -n 4
4+ echo
+ echo hello
hello
-V ve -x arasındaki farklara vurgu yapmak için "echo -n" yazdığımı unutmayın. Ayrıca, -v "-o ayrıntılı" ile aynıdır, ancak ikincisi bir Shebang'ın parçası olarak çalışmıyor gibi görünüyor.
Bunun da çalışması gerekir:
#!/bin/bash -x
cd ~/hello
ls
Bu çalışmalı:
set -o verbose #echo on
...
set +o verbose #echo off
set -o xtrace
Ve set +o xtrace
Arkadaşlarınızdır (-o verbose
'Dan daha ayrıntılıdır ve çıktı, STDOUT'ta oturum açmış gibi ayrıntılı olanın aksine STDERR'a gider).
Daha fazla ipucuna bakın burada
Birkaç yol var.
#!/usr/bin/env bash -x
shebang hattı olarak.
Dahil olmak üzere set -x
betiğin kendisinde işlevsellik etkinleştirilirken set +x
devre dışı bırakacak. Bu yöntemlerin her ikisi de daha taşınabilir sh Shell ile çalışacaktır.
Eğer doğru hatırlıyorsam Perl de -x seçeneğine sahiptir.
gibi gidiyor
language -x script
language = python, Perl, bash -x = işleç betiği = dosyaadı
umarım yardımcı olur.
#! /bin/bash -x
ne istersen yapar.