it-swarm-tr.com

Bh komut dosyalarının yürütülmeden önce her komutu nasıl yazdıracağını?

Ö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.

90
Epeius
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; ...;)

114
Steven Parkes

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
10
tomoe

Bu çalışmalı:

set -o verbose #echo on
...
set +o verbose #echo off
7
splattne

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

4
pihentagy

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.

3
user6784

gibi gidiyor

language -x script

language = python, Perl, bash -x = işleç betiği = dosyaadı

umarım yardımcı olur.

1
debuggerpk

#! /bin/bash -x ne istersen yapar.

0
Rory