set -x
Mencetak jejak perintah sederhana, untuk perintah, perintah kasus, perintah pilih, dan aritmatika untuk perintah dan argumennya atau daftar kata terkait setelah diperluas dan sebelum dijalankan. Nilai variabel PS4 diperluas dan nilai yang dihasilkan dicetak sebelum perintah dan argumennya yang diperluas.
[sumber]
Contoh
set -x
echo `expr 10 + 20 `
+ expr 10 + 20
+ echo 30
30
set +x
echo `expr 10 + 20 `
30
Contoh di atas mengilustrasikan penggunaan set -x
. Saat digunakan, ekspresi aritmatika di atas telah diperluas. Kami dapat melihat bagaimana satu baris dievaluasi langkah demi langkah.
- Langkah pertama
expr
telah dievaluasi. - Langkah kedua
echo
telah dievaluasi.
Untuk mengetahui lebih lanjut tentang set → kunjungi tautan ini
ketika datang ke skrip shell Anda,
[ "$DEBUG" == 'true' ] && set -x
Skrip Anda mungkin telah mencetak beberapa baris informasi tambahan saat mode eksekusi dipilih sebagai DEBUG
. Secara tradisional, orang biasa mengaktifkan mode debug saat skrip dipanggil dengan argumen opsional seperti -d
-u:dinonaktifkan secara default. Saat diaktifkan, pesan kesalahan ditampilkan saat menggunakan variabel yang belum dikonfigurasi.
-v:tidak aktif secara default. Setelah aktivasi, konten asli informasi akan ditampilkan (tanpa resolusi variabel) sebelum informasi ditampilkan.
-x:tidak aktif secara default. Jika diaktifkan, konten perintah akan ditampilkan sebelum perintah dijalankan (setelah resolusi variabel, terdapat simbol ++).
Bandingkan perbedaan berikut:
/ # set -v && echo $HOME
/root
/ # set +v && echo $HOME
set +v && echo $HOME
/root
/ # set -x && echo $HOME
+ echo /root
/root
/ # set +x && echo $HOME
+ set +x
/root
/ # set -u && echo $NOSET
/bin/sh: NOSET: parameter not set
/ # set +u && echo $NOSET
set -x
mengaktifkan mode shell tempat semua perintah yang dieksekusi dicetak ke terminal. Dalam kasus Anda, ini jelas digunakan untuk debugging, yang merupakan kasus penggunaan umum untuk set -x
:mencetak setiap perintah saat dijalankan dapat membantu Anda memvisualisasikan alur kontrol skrip jika tidak berfungsi seperti yang diharapkan.
set +x
menonaktifkannya.