Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Cara Menggunakan eval di Linux Bash Script

Posted on August 22, 2022

Dari semua perintah Bash, eval lama yang malang mungkin memiliki reputasi terburuk. Dibenarkan, atau hanya pers yang buruk? Kami membahas penggunaan dan bahaya dari perintah Linux yang paling tidak disukai ini.

Kita Perlu Bicara Tentang eval

Digunakan secara sembarangan, eval dapat menyebabkan perilaku yang tidak terduga dan bahkan ketidakamanan sistem. Dari suaranya, kita mungkin tidak boleh menggunakannya, kan? Yah tidak cukup.

Anda bisa mengatakan hal serupa tentang mobil. Di tangan yang salah, mereka adalah senjata mematikan. Orang-orang menggunakannya dalam ram-razia dan sebagai kendaraan untuk melarikan diri. Haruskah kita semua berhenti menggunakan mobil? Tidak, tentu saja tidak. Tetapi mereka harus digunakan dengan benar, dan oleh orang-orang yang tahu cara mengemudikannya.

Kata sifat yang biasa diterapkan pada eval adalah “jahat.” Tapi itu semua bermuara pada bagaimana itu digunakan. Perintah eval menyusun nilai dari satu atau beberapa variabel. Ini menciptakan string perintah. Kemudian menjalankan perintah itu. Hal ini berguna saat Anda perlu mengatasi situasi saat konten perintah diturunkan secara dinamis selama eksekusi skrip Anda.

Masalah muncul saat skrip ditulis untuk menggunakan eval pada string yang telah diterima dari suatu tempat di luar skrip. Ini dapat diketik oleh pengguna, dikirim melalui API, ditandai ke permintaan HTTPS, atau di mana pun di luar skrip.

Jika string yang akan dikerjakan eval tidak diturunkan secara lokal dan terprogram, ada risiko bahwa string mungkin berisi instruksi berbahaya yang disematkan atau input yang dibuat dengan buruk. Jelas, Anda tidak ingin eval menjalankan perintah jahat. Jadi untuk amannya, jangan gunakan eval dengan string yang dibuat secara eksternal atau input pengguna.

Langkah Pertama Dengan eval

Perintah eval adalah perintah shell Bash bawaan. Jika Bash hadir, eval akan hadir.

eval menggabungkan parameternya menjadi satu string. Ini akan menggunakan satu ruang untuk memisahkan elemen gabungan. Ini mengevaluasi argumen dan kemudian meneruskan seluruh string ke shell untuk dieksekusi.

Mari buat variabel bernama wordcount.

wordcount=”wc -w raw-notes.md”

Variabel string berisi perintah untuk menghitung kata dalam file bernama “ raw-notes.md.”

Kita dapat menggunakan eval untuk mengeksekusi perintah itu dengan meneruskannya nilai variabel.

eval”$wordcount”

Perintah dijalankan di shell saat ini, bukan di subkulit. Kita dapat dengan mudah menunjukkan ini. Kami memiliki file teks pendek yang disebut “variables.txt.” Ini berisi dua baris ini.

first=How-To second=Geek

Kami akan menggunakan cat untuk mengirim baris ini ke jendela terminal. Kemudian kita akan menggunakan eval untuk mengevaluasi perintah cat sehingga instruksi di dalam file teks ditindaklanjuti. Ini akan mengatur variabel untuk us.

cat variabel.txt eval “$(cat variabel.txt)” echo $first $second

Dengan menggunakan echo untuk mencetak nilai variabel kita dapat melihat bahwa perintah eval berjalan di shell saat ini, bukan a proses subshell.

A dalam subkulit tidak dapat mengubah lingkungan shell induknya. Karena eval berjalan di shell saat ini, variabel yang ditetapkan oleh eval dapat digunakan dari shell yang meluncurkan perintah eval.

Perhatikan bahwa jika Anda menggunakan eval dalam skrip, shell yang akan diubah oleh eval adalah subkulit yang menjalankan skrip di, bukan shell yang meluncurkannya.

Menggunakan Variabel dalam Perintah String

Kita dapat memasukkan variabel lain dalam string perintah. Kami akan menetapkan dua variabel untuk menampung integer.

num1=10 num2=7

Kami akan membuat variabel untuk menampung perintah expr yang akan mengembalikan jumlah dua angka. Ini berarti kita perlu mengakses nilai dari dua variabel integer dalam perintah. Perhatikan tanda centang di sekitar pernyataan expr.

add=”`expr $num1 + $num2`”

Kita akan membuat perintah lain untuk menunjukkan kepada kita hasil dari pernyataan expr.

show=”echo”

Perhatikan bahwa kita tidak perlu menyertakan spasi di akhir string gema, atau di awal string expr. eval menangani itu.

Dan untuk menjalankan seluruh perintah yang kita gunakan:

eval $show $add

Nilai variabel di dalam string expr diganti ke dalam string dengan eval , sebelum diteruskan ke shell untuk dieksekusi.

Accessing Variables Inside Variables

Anda dapat menetapkan nilai ke variabel, dan kemudian menetapkan nama variabel itu ke variabel lain. Dengan menggunakan eval, Anda dapat mengakses nilai yang disimpan di variabel pertama, dari namanya yang merupakan nilai yang disimpan di variabel kedua. Sebuah contoh akan membantu Anda menguraikan itu.

Salin skrip ini ke editor, dan simpan sebagai file bernama “assign.sh.”

#!/bin/bash title=”How-To Geek” pages=title command=”echo ” eval $command ${$webpage}

Kita perlu membuatnya dapat dieksekusi dengan perintah chmod.

chmod +x assign.sh

Anda harus melakukan ini untuk skrip apa pun yang Anda salin dari artikel ini. Cukup gunakan nama skrip yang sesuai di setiap kasus.

Ketika kami menjalankan skrip kami, kami melihat teks dari judul variabel meskipun perintah eval menggunakan halaman web variabel.

./assign.sh

Tanda dolar yang lolos “$” dan kurung ” {}” menyebabkan eval untuk melihat nilai yang disimpan di dalam variabel yang namanya disimpan di variabel halaman web.

Menggunakan Variabel yang Dibuat Secara Dinamis

Kita bisa menggunakan eval untuk membuat variabel secara dinamis. Skrip ini disebut “loop.sh.”

#!/bin/bash total=0 label=”Looping complete. Total:” for n in {1..10} do eval x$n=$n echo “Loop” $x$n ((total+=$x$n)) done echo $x1 $x2 $x3 $x4 $x5 $x6 $x7 $x8 $x9 $x10 echo $label $total

Ini membuat variabel yang disebut total yang menampung jumlah dari nilai variabel yang kita buat. Kemudian membuat variabel string yang disebut label. Ini adalah string teks sederhana.

Kita akan mengulang 10 kali dan membuat 10 variabel yang disebut x1 hingga x10. Pernyataan eval di badan loop menyediakan “x” dan mengambil nilai penghitung loop $n untuk membuat nama variabel. Pada saat yang sama, ia menetapkan variabel baru ke nilai penghitung loop $n.

It mencetak variabel baru ke jendela terminal dan kemudian menambahkan variabel total dengan nilai variabel baru .

Di luar loop, 10 variabel baru dicetak sekali lagi, semuanya dalam satu baris. Perhatikan bahwa kita dapat merujuk ke variabel dengan nama aslinya juga, tanpa menggunakan versi yang dihitung atau diturunkan dari namanya.

Terakhir, kita mencetak nilai variabel total.

./loop.sh

Using eval Dengan Arrays

Bayangkan skenario di mana Anda memiliki skrip yang berjalan lama dan melakukan beberapa pemrosesan untuk Anda. Itu menulis ke file log dengan nama yang dibuat dari cap waktu. Kadang-kadang, itu akan memulai file log baru. Ketika skrip selesai, jika tidak ada kesalahan, itu menghapus file log yang telah dibuatnya.

Anda tidak ingin hanya rm *.log, Anda hanya ingin menghapus file log yang telah dibuatnya. Script ini mensimulasikan fungsionalitas itu. Ini adalah “clear-logs.sh.”

#!/bin/bash mendeklarasikan -a logfiles filecount=0 rm_string=”echo” function create_logfile() { ((++filecount)) filename=$(date +”%Y -%m-%d_%H-%M-%S”).log logfiles[$filecount]=$filename echo $filecount “Dibuat” ${logfiles[$filecount]} } # isi skrip. Beberapa pemrosesan dilakukan di sini yang # secara berkala menghasilkan file log. Kami akan mensimulasikan create_logfile sleep 3 create_logfile sleep 3 create_logfile sleep 3 create_logfile # apakah ada file yang harus dihapus? untuk ((berkas=1; berkas

Itulah berita seputar Cara Menggunakan eval di Linux Bash Script, semoga bermanfaat. Disadur dari HowToGeek.com.

Terbaru

  • Tutorial SEO Anchor Link: Cara Dapat Ranking di Google Lewat Strategi Link Building yang Aman
  • Inilah Huawei Pura 90 Pro, HP Flagship dengan Desain Kamera Segitiga Unik dan Performa Kirin yang Makin Gahar
  • Inilah 5 Rekomendasi Kipas Tangan Portable Cas Tahan Lama Biar Kalian Tetap Adem Saat Cuaca Panas Ekstrem
  • Inilah MacBook Neo, Laptop Termurah Apple yang Ternyata Punya Performa Gaming Gila!
  • Inilah Daftar Tablet SIM Card 5G dengan Keyboard Terbaik 2026 untuk Kerja Remote
  • Inilah Daftar Game Penghasil Pulsa 2026, Cara Cerdas Dapat Kuota Gratis Tanpa Keluar Duit Sepeserpun!
  • Inilah Caranya Klaim Bonus Kuota Lokal Smartfren 2026, Jangan Sampai Bonus Kalian Hangus Sia-sia!
  • Inilah Cara Mengatasi Rockstar Games Launcher Not Responding dan Macet Saat Connecting
  • Inilah Cara Cek HP Masih Kredit atau Sudah Lunas Biar Kalian Nggak Ketipu Pas Beli Bekas
  • Inilah Cara Pakai Astute FF Beta Apk 2026, Rahasia Unlock Server 2.0 Tanpa Verifikasi!
  • Inilah Ketentuan Foto UM-PTKIN 2026 yang Benar Biar Nggak Gagal Verifikasi Administrasi
  • Inilah Cara Persiapan E IJAZAH 2026 yang Benar Buat Operator Sekolah Agar Data Siswa Aman dan Valid
  • Inilah Cara Cek Status PKH April 2026 Secara Akurat, Dana Bansos Sudah Masuk Rekening Belum Ya?
  • Inilah Spesifikasi Vivo Y31d Pro, HP Murah dengan Baterai 7.000 mAh dan Bodi Tahan Banting Ekstrem
  • Inilah 5 Rekomendasi HP Samsung dengan Fitur NFC Terbaik yang Bikin Hidup Makin Praktis dan Satset
  • Inilah Deretan HP Vivo dengan Kamera Stabilizer Terbaik 2026, Cocok Banget Buat Konten Kreator Modal Minim!
  • Cara Mendapatkan Lead dan Rekomendasi SEO dari ChatGPT dan Claude (Update Tahun 2026)
  • Inilah Rekomendasi HP Infinix Kamera Bagus dan RAM Besar Paling Juara Buat Konten dan Gaming!
  • Inilah Trik Supaya Koneksi Indosat Makin Kencang, Tutorial Setting APN Terbaru 2026!
  • Inilah 7 HP Xiaomi NFC Termurah 2025, Dompet Aman Aktivitas Tetap Lancar!
  • Inilah 5 Rekomendasi HP Samsung dengan Fitur NFC Termurah dan Terbaik untuk Kebutuhan Harian Kalian
  • Inilah Rekomendasi HP Vivo Harga 2 Jutaan dengan Fitur Stabilizer Kamera Terbaik untuk Konten Kreator
  • Inilah 5 HP Infinix Kamera Bagus dan RAM Besar, Bikin Konten Jadi Makin Estetik!
  • Inilah Alasan Kenapa Lenovo Yoga Tab Bakal Jadi Tablet AI Paling Gahar di Tahun 2026
  • Inilah Bocoran Tecno Pova 8 dan Spark 50 Pro, HP dengan Baterai Monster Sampai 7.750mAh!
  • Inilah Alasan Kenapa Poco X8 Pro Series Ludes Terjual 30 Ribu Unit dalam Sehari, Performanya Benar-Benar Naik Kelas!
  • Inilah Rekomendasi HP Samsung dengan Kamera Terbaik 2025, Hasil Foto Dijamin Kayak Profesional!
  • Inilah Kemudahan Belanja Elektronik Lewat Kolaborasi Strategis Indodana Finance dan Sharp Indonesia
  • Inilah Rekomendasi Smartwatch Mirip Apple Watch Termurah 2026 yang Bikin Gaya Makin Maksimal
  • Inilah Cara Cek Lokasi UTBK 2026 Agar Tidak Salah Alamat dan Terlambat
  • Is it Time to Replace Nano? Discover Fresh, the Terminal Text Editor You Actually Want to Use
  • How to Design a Services Like Google Ads
  • How to Fix 0x800ccc0b Outlook Error: Step-by-Step Guide for Beginners
  • How to Fix NVIDIA App Error on Windows 11: Simple Guide
  • How to Fix Excel Formula Errors: Quick Fixes for #NAME
  • Complete Tutorial on OSMnx: Turning Map Data into Powerful AI World Models
  • Complete Tutorial: Mastering AI Video Generation with Seedance 2.0 and Higgsfield
  • How to Create Blockbuster-Style Cinematic AI Videos: A Complete Tutorial for Beginners Using Visiana AI
  • How to Master Next-Gen AI Training: A Beginner Tutorial on In-Place TTT and Domain-Invariant Neurons for Smarter Models
  • Complete Tutorial: Integrating Open Claw with Discord, GitHub, and Google for Personal AI Productivity
  • Apa itu Spear-Phishing via npm? Ini Pengertian dan Cara Kerjanya yang Makin Licin
  • Apa Itu Predator Spyware? Ini Pengertian dan Kontroversi Penghapusan Sanksinya
  • Mengenal Apa itu TONESHELL: Backdoor Berbahaya dari Kelompok Mustang Panda
  • Siapa itu Kelompok Hacker Silver Fox?
  • Apa itu CVE-2025-52691 SmarterMail? Celah Keamanan Paling Berbahaya Tahun 2025

©2026 emka.web.id | Design: Newspaperly WordPress Theme