ตัวอย่างเช่นฉันมีไฟล์ทุบตีง่าย
#!/bin/bash
cd ~/hello
ls
ฉันจะทำให้มันแสดงทุกคำสั่งก่อนดำเนินการได้อย่างไร เพียงผลตรงข้ามของ "@echo off" ในการเขียนสคริปต์ชุด windows
#!/bin/bash -x
ตัวอย่างเช่นฉันมีไฟล์ทุบตีง่าย
#!/bin/bash
cd ~/hello
ls
ฉันจะทำให้มันแสดงทุกคำสั่งก่อนดำเนินการได้อย่างไร เพียงผลตรงข้ามของ "@echo off" ในการเขียนสคริปต์ชุด windows
#!/bin/bash -x
คำตอบ:
bash -x script
หรือ
set -x
ในสคริปต์
set +x
คุณสามารถล้างค่าตัวเลือกอีกครั้งกับ หากคุณต้องการทำเพียงไม่กี่คำสั่งคุณสามารถใช้ subshell: `(set -x; command1; command; ... ;)
PS4
-x
เช่น: PS4='Line $LINENO @ $(date +%s.%N): ' bash -x script
( date
จะทำให้ช้าลง)
สิ่งเหล่านี้ยังใช้งานได้:
set -v
หรือ
#!/bin/bash -v
แต่ -v ไม่ได้พิมพ์สตริง PS4 ก่อนสคริปต์แต่ละบรรทัดและจะไม่ติดตามขั้นตอนของคำสั่ง "for" (ตัวอย่าง) แยกทีละรายการ มันจะสะท้อนความคิดเห็นในขณะที่ -x ไม่ได้
นี่คือตัวอย่างของเอาต์พุตโดยใช้ -v:
#!/bin/bash -v
# this is a comment
for i in {1..4}
do
echo -n $i
done
1234echo
echo hello
hello
นี่คือผลลัพธ์ของสคริปต์เดียวกันกับ -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
โปรดทราบว่าฉันรวม "echo -n" เพื่อเพิ่มการเน้นไปที่ความแตกต่างระหว่าง -v และ -x นอกจากนี้ -v ก็เหมือนกับ "-o verbose" แต่ตัวหลังดูเหมือนจะไม่ทำงานเป็นส่วนหนึ่งของ shebang
สิ่งนี้ควรใช้:
#!/bin/bash -x
cd ~/hello
ls
สิ่งนี้น่าจะใช้ได้:
set -o verbose #echo on
...
set +o verbose #echo off
set -o xtrace
และset +o xtrace
เป็นเพื่อนของคุณ (มันเป็น verbose มากกว่า-o verbose
และผลลัพธ์จะไปที่ STDERR ซึ่งตรงข้ามกับ verbose ซึ่งดูเหมือนว่าจะเข้าสู่ STDOUT)
ดูเคล็ดลับเพิ่มเติมได้ที่นี่
มีสองสามวิธี
#!/usr/bin/env bash -x
ในฐานะที่เป็นสาย shebang
การรวมset -x
ในสคริปต์เองจะเปิดใช้งานฟังก์ชันในขณะที่set +x
จะปิดใช้งาน วิธีการทั้งสองนี้จะทำงานกับเปลือกแบบพกพามากขึ้น
ถ้าฉันจำได้อย่างถูกต้อง Perl ยังมีตัวเลือก -x
ไปเหมือน
language -x script
ภาษา = python, perl, bash -x = โอเปอเรเตอร์สคริปต์ = ชื่อไฟล์
หวังว่ามันจะช่วย
-x
ไม่มีอะไรเกี่ยวข้องกับการสะท้อนใน Python
#! /bin/bash -x
ทำในสิ่งที่คุณต้องการ
set
ตัวเลือกที่คุณสามารถพบพวกเขาในหน้าผู้ชายคนนี้