Ada bash debugger, bashdb , yang merupakan paket yang dapat diinstal pada banyak distro. Ini menggunakan mode debugging diperpanjang bawaan bash ( shopt -s extdebug
). Ini mirip sekali dengan gdb; inilah sesi contoh untuk memberikan rasa:
$ ls
1st.JPG 2ndJPG.JPG
$ cat ../foo.sh
for f in *.JPG
do
newf=${f/JPG/jpg}
mv $f $newf
done
$ bashdb ../foo.sh
(foo.sh:1):
1: for f in *.JPG
bashdb<0> next
(foo.sh:3):
3: newf=${f/JPG/jpg}
bashdb<1> next
(foo.sh:4):
4: mv $f $newf
Seperti dalam gdb, pernyataan ditampilkan tepat sebelum akan dieksekusi. Jadi kita bisa memeriksa variabel untuk melihat apa yang akan dilakukan pernyataan sebelum melakukannya.
bashdb<2> print $f $newf
1st.JPG 1st.jpg
bashdb<3> next
(foo.sh:1):
1: for f in *.JPG
bashdb<4> next
(foo.sh:3):
3: newf=${f/JPG/jpg}
bashdb<5> next
(foo.sh:4):
4: mv $f $newf
bashdb<6> print $f $newf
2ndJPG.JPG 2ndjpg.JPG
Bukan itu yang kita inginkan! Mari kita lihat lagi ekspansi parameter.
bashdb<7> print $f ${f/JPG/jpg}
2ndJPG.JPG 2ndjpg.JPG
bashdb<8> print $f ${f/JPG$/jpg}
2ndJPG.JPG 2ndJPG.JPG
bashdb<9> print $f ${f/%JPG/jpg}
2ndJPG.JPG 2ndJPG.jpg
Oke, itu berhasil. Mari kita atur newf
ke nilai yang benar.
bashdb<10> eval newf=${f/%JPG/jpg}
$? is 0
bashdb<11> print $f $newf
2ndJPG.JPG 2ndJPG.jpg
Kelihatan bagus. Lanjutkan skrip.
bashdb<12> next
Debugged program terminated normally. Use q to quit or R to restart.
$ ls
1st.jpg 2ndJPG.jpg