Peta dunia

 

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.

Anda di siniyou@kedai:~$

Folder ~

  • kedai/ (folder)drwxrwxr-x
  • tidy.sh (fail)-rwxr-xr-xboleh dijalankan

+ 3 tersembunyi (ls -a)

Servis

  • cronberjalanmula semasa boot
  • sshberjalanmula semasa boot
  • nginxberjalanmula 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.

        Anda di siniyou@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 boot
        • sshberjalanmula semasa boot
        • nginxberjalanmula 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.

        1 / 4set -euo pipefail
        set -euo pipefail

        Anda 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

        1. bash -c 'set -u; echo "$NOPE"'
        2. shellcheck myscript.sh

        0 daripada 3 langkah siap · Tanda anda disimpan.