EN: Read in English
Dunia L4: Dapur Jauh
Skrip lebih selamat: set -euo pipefail
Anda akan belajar: membuat skrip berhenti pada masalah pertama, sebelum ia merosakkan.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Linux (Debian 13) pada 1 Nov 2026
Masalahnya
Malam ini, tidy.sh berjalan. Tetapi folder kedai/tmp tak wujud. Apa jadi?
#!/bin/bash
# set -euo pipefail
cd "$HOME/kedai/tmp"
rm -f *.txt
echo "tidy done"Pilih satu jawapan.
Tengok
Anda you di /home/you. 2 benda di sini. Servis: cron berjalan, ssh berjalan, nginx berjalan.
you@kedai:~$Folder ~
- kedai/ (folder)
drwxrwxr-x - tidy.sh (fail)
-rwxr-xr-xboleh dijalankan
+ 3 tersembunyi (ls -a)
Servis
cronberjalanmula semasa bootsshberjalanmula semasa bootnginxberjalanmula semasa boot
Ralat sebenar kata cd: … No such file or directory. Maksudnya: skrip terus berjalan dalam bilik yang salah. Ia padam menu.txt dan prices.txt, kemudian kata tidy done.
Tengok
Strict mode (mod ketat) ialah penyelia yang tegas. set -euo pipefail ialah tiga peraturan. Susun apa yang setiap satu hentikan.
Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.
Cuba
Kejutkan penyelia: buang # di depan baris 2 dengan sed. Kemudian jalankan tidy.sh. Fail anda mesti selamat.
Anda you di /home/you. 4 benda di sini. Servis: cron berjalan, ssh berjalan, nginx berjalan.
you@kedai:~$Folder ~
- kedai/ (folder)
drwxrwxr-x - menu.txt (fail)
-rw-r--r-- - prices.txt (fail)
-rw-r--r-- - tidy.sh (fail)
-rwxr-xr-xboleh dijalankan
+ 3 tersembunyi (ls -a)
Servis
cronberjalanmula semasa bootsshberjalanmula semasa bootnginxberjalanmula semasa boot
Teka
Satu skrip jalankan rm -rf "$BAKUP_DIR"/*. Nama balang itu salah eja, jadi ia kosong. Tanpa -u, apa yang rm dapat?
Pilih satu jawapan.
Semak
Baris yang bagus atau perlu dibaiki?
Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.
set -euo pipefailAnda berjaya!
Kini anda boleh buat skrip berhenti pada masalah pertama.
Nak tahu lebih (pilihan)
-e ada titik buta: ia abaikan kegagalan dalam ujian if, atau sebelum && dan ||. Untuk benarkan satu kegagalan dengan sengaja, tulis cmd || true. trap boleh mengemas bila skrip berhenti. Uji skrip di mesin pakai buang dahulu.
Misi sebenar
bash -c 'set -u; echo "$NOPE"'shellcheck myscript.sh
0 daripada 3 langkah siap · Tanda anda disimpan.
English
Tonight, tidy.sh runs. But the folder kedai/tmp does not exist. What happens?
#!/bin/bash
# set -euo pipefail
cd "$HOME/kedai/tmp"
rm -f *.txt
echo "tidy done"
The real error says cd: … No such file or directory. Plain words: the script kept going in the wrong room. It deleted menu.txt and prices.txt, then said tidy done.
Strict mode is a strict supervisor. set -euo pipefail is three rules. Sort what each one stops.
Wake the supervisor: remove the # in front of line 2 with sed. Then run tidy.sh. Your files must survive.
A script runs rm -rf "$BAKUP_DIR"/*. The jar name has a typo, so it is empty. Without -u, what does rm get?
Good line or needs work?
You can now make a script stop at the first problem.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Bash manual: the set builtin · Bash manual: pipelines
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?