Soal 1Mana cara yang benar untuk menetapkan ke sebuah variabel shell?
Shell Script - Variabel dan Substitusi Perintah
Tetapkan dengan name=value dan referensikan dengan "$name", lihat perbedaan ekspansi tanda kutip tunggal dan ganda, jalankan substitusi perintah $(date), lakukan ekspansi aritmatika $(( n * 2 )), dan baca input dengan read — divisualkan dan dipraktikkan di terminal browser.
Memakai Variabel — Menetapkan dan Mereferensikan
Dalam shell script, kamu memberi sebuah nilai sebuah nama dan memakainya ulang sebanyak yang kamu mau.
Kamu menetapkan dengan bentuk name=value, dan kamu tidak boleh menaruh spasi di sekitar =.
Kalau kamu lakukan, itu dibaca sebagai perintah terpisah dan menghasilkan error.
Kamu membaca kembali nilai yang ditetapkan dengan $name atau ${name}.
Kalau ada karakter yang langsung mengikuti $name, itu dianggap bagian dari nama variabel, jadi pakai ${name} untuk menandai batasnya.
name=alice, lalu baca dengan $name untuk memakainya.Tanda Kutip — Perbedaan Ekspansi Tunggal dan Ganda
Ada dua jenis tanda kutip untuk membungkus string, dan ekspansinya berbeda.
Di dalam tanda kutip tunggal '...', $name dianggap literal dan tidak diekspansi.
Di dalam tanda kutip ganda "...", $name diganti dengan nilainya.
Pakai tanda kutip ganda saat kamu ingin menyelipkan nilai di tengah teks, seperti "Hello $name", dan tanda kutip tunggal saat kamu ingin mencetak $ apa adanya.
$name apa adanya; tanda kutip ganda menggantinya dengan nilai.name=alice # tanpa spasi di sekitar =
echo "hello $name" # hello alice (kutip ganda ekspansi)
echo 'hello $name' # hello $name (kutip tunggal tidak)
echo "path is ${name}/data" # pakai {} untuk menandai batas nama
Substitusi Perintah — $()
$(command) adalah cara untuk memakai output sebuah perintah sebagai nilai tepat di tempat kamu menuliskannya.
Tulis sesuatu seperti today=$(date +%Y-%m-%d) dan tanggal yang dihasilkan date langsung masuk ke today.
Kamu memakainya untuk menangkap hasil perintah ke dalam variabel atau menyelipkannya di tengah teks.
$(date) diganti oleh output dari menjalankan date, dan today=$(date) memasukkan nilai itu ke dalam variabel.today=$(date +%Y-%m-%d) # tangkap output date ke variabel
echo "today is $today" # selipkan nilai yang ditangkap ke teks
user=$(whoami) # output perintah lain juga bisa jadi nilai
echo "user: $user"
Ekspansi Aritmatika — $(( ))
Di dalam $(( )) adalah aritmatika bilangan bulat.
$(( 3 + 4 )) diganti dengan 7.
Kamu bisa pakai + untuk menambah, - untuk mengurangi, * untuk mengali, / untuk membagi, dan % untuk sisa bagi.
Variabel masuk tanpa $, ditulis langsung dengan nama seperti $(( n * 2 )).
$(( )) dievaluasi: $(( 3 + 4 )) adalah 7, dan dengan n=5 maka $(( n * 2 )) adalah 10.echo "sum: $(( 10 + 5 ))" # menambah menghasilkan 15
n=7
echo "double: $(( n * 2 ))" # variabel masuk tanpa $
echo "rest: $(( 17 % 5 ))" # sisa bagi dengan % adalah 2
Menerima Input — read
read v membaca satu baris input dan menaruhnya ke dalam variabel v.
Kamu memakainya saat ingin meminta sebuah nilai dari pengguna di dalam script.
Di konsol kursus ini, mengalirkan input lewat pipe, seperti printf 'value\n' | ./greet.sh, berjalan dengan andal.
Mencetak prompt dengan echo sebelum read membuat lebih jelas apa yang harus diketik.
read n membaca satu baris dan menaruhnya ke n. Mengalirkan nilai lewat pipe dengan printf menyampaikannya ke read tanpa mengetik manual.echo "enter your name:" # minta apa yang harus diketik
read who # baca satu baris ke who
echo "hi, $who" # selipkan nilai yang diterima ke teks
printf 'bob\n' | (read who; echo "hi, $who") # input bisa datang dari pipe juga
Menyelipkan Jumlah ke Pesan dengan Substitusi Perintah
Substitusi perintah $() sering dipakai untuk menangkap sebuah "hasil hitungan", seperti jumlah file, ke dalam variabel.
Tulis sesuatu seperti n=$(ls *.txt | wc -l) dan hasil gabungan ls dan wc -l masuk ke n.
Selipkan variabel itu ke dalam string berkutip ganda dan kamu bisa menyusun pesan satu baris yang mudah dibaca yang memuat jumlahnya.
ls dan wc -l masuk ke n via substitusi perintah, dan menyelipkannya ke teks menampilkan txt files: 2.Cek Pemahaman
Jawab setiap pertanyaan satu per satu.
Soal 2Bagaimana echo '$name' ditampilkan (saat name=alice)?
Soal 3Mana cara yang menaruh output sebuah perintah ke dalam variabel sebagai nilai?