Câu trả lời:
bash -x script
hoặc là
set -x
trong kịch bản.
Bạn có thể hủy đặt lại tùy chọn với set +x. Nếu bạn chỉ muốn làm điều đó cho một vài lệnh, bạn có thể sử dụng một lớp con: `(set -x; lệnh1; lệnh; ...;)
PS4bạn có thể điều chỉnh lời nhắc của -x. Ví dụ: PS4='Line $LINENO @ $(date +%s.%N): ' bash -x script( datesẽ làm chậm nó xuống)
Đây cũng là công việc:
set -v
hoặc là
#!/bin/bash -v
Nhưng -v không in chuỗi PS4 trước mỗi dòng script và nó không theo dõi các bước của câu lệnh "for" (ví dụ). Nó không lặp lại bình luận trong khi -x thì không.
Đây là một ví dụ về đầu ra sử dụng -v:
#!/bin/bash -v
# this is a comment
for i in {1..4}
do
echo -n $i
done
1234echo
echo hello
hello
Đây là kết quả của cùng một tập lệnh với -x:
+ 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
Lưu ý rằng tôi đã bao gồm "echo -n" để thêm điểm nhấn cho sự khác biệt giữa -v và -x. Ngoài ra, -v giống như "-o verbose", nhưng cái sau dường như không hoạt động như một phần của shebang.
Có một số cách.
#!/usr/bin/env bash -x
như dòng shebang.
Bao gồm set -xtrong chính kịch bản sẽ kích hoạt chức năng trong khi set +xsẽ vô hiệu hóa nó. Cả hai phương pháp này cũng sẽ hoạt động với vỏ sh di động hơn.
Nếu tôi nhớ chính xác thì perl cũng có tùy chọn -x.
đi như
language -x script
ngôn ngữ = python, perl, bash -x = toán tử script = tên tệp
hy vọng nó giúp.
-xkhông có gì để lặp lại trong Python
settùy chọn là gì, bạn có thể tìm thấy chúng trên trang người đàn ông này .