Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Bash Lanjutan

Pelajaran 1 dari 15

Membaca masukan skrip

Argumen skrip: "$@", $#, dan shift

Setelah pelajaran ini kamu bisa meneruskan semua argumen dengan "$@" tanpa memecah nama berspasi, membaca $#, dan menggeser argumen dengan shift.

±13 menitDiperiksa 5 Okt 2026

Materi

Di Administrasi Linux Dasar, skrip menerima argumen dalam jumlah tetap: $1 untuk cabang, $2 untuk shift kerja. Skrip yang dipakai orang lain sering menerima daftar yang panjangnya tidak tentu, misalnya beberapa nama cabang atau beberapa berkas sekaligus. Untuk itu bash menyediakan "$@": semua argumen, masing-masing tetap menjadi satu kata walaupun berisi spasi.

#!/bin/bash
# cabang.sh — dipanggil: bash cabang.sh Medan "Kota Baru" Solo
echo "Ada $# cabang"
for c in "$@"; do
  echo "Cabang: $c"
done

Kutip ganda di sekitar $@ adalah bagian pentingnya. Tanpa kutip, $@ dan $* dipecah lagi di setiap spasi, sehingga Kota Baru menjadi dua putaran: Kota dan Baru. "$*" kebalikannya: semua argumen digabung menjadi satu kata. Hanya "$@" yang menjaga batas argumen persis seperti yang diketik pemanggil.

shift membuang argumen pertama dan menggeser sisanya: $2 menjadi $1, $3 menjadi $2, dan $# berkurang satu. shift 2 membuang dua sekaligus. Pola yang sering muncul: argumen pertama punya arti khusus, misalnya folder tujuan, dan sisanya daftar berkas. Simpan dulu $1 ke variabel, jalankan shift, lalu "$@" tinggal berisi daftar berkas.

TUJUAN=$1
shift
mkdir -p "$TUJUAN"
cp "$@" "$TUJUAN"/

Kesalahan umum: menjalankan shift sebelum menyimpan $1, sehingga nilainya hilang; dan menulis $@ tanpa kutip, yang baru ketahuan saat ada nama berspasi. Di dalam fungsi, "$@", $#, dan shift bekerja pada argumen fungsi itu, bukan argumen skrip.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Skrip tampil.sh di bawah dijalankan dengan bash tampil.sh Medan Solo "Kota Baru". Apa baris kedua yang dicetaknya?

#!/bin/bash
echo "$# argumen"
shift 2
echo "$1 ($# tersisa)"
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 1 lagi