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

  • Apa itu Pin di iMessage?
  • SKTP Nggak Muncul di Info GTK padahal Sudah Terbit? Ini Trik Rahasia Biar Data Langsung Update!
  • Ini Trik Nuyul Cari Cuan di Game Puzzle Farm 2026 Biar Koin Melimpah Tanpa Undang Teman
  • Inilah Ukuran Kertas Thermal 58mm ISO Di Word, Berapa dan Panduan Lengkap Memilihnya
  • Bukan Cuma Zakat! Ternyata Sumbangan Jenis Ini Bisa Ngurangin Pajak Kalian! Simak Penjelasannya
  • Inilah Caranya Mengajar Bahasa Indonesia di Amerika Serikat Lewat Beasiswa Fulbright FLTA 2026
  • Inilah 6 Rekomendasi HP yang Awet dan Tahan Lama Biar Kalian Nggak Gonta-ganti Terus!
  • Apa itu Proses BOP dan Psikotes BRI Life?
  • Ini Cara Input Tugas Tambahan Guru di EMIS GTK IMP 2026 Biar Jam Mengajar Aman!
  • APK Juice Pack Frenzy Penipuan? Benarkah Membayar atau Cuma Tipuan Iklan? Ini Faktanya!
  • Apakah Apk ReelAct Penipu? Mau Tarik 100 Dolar dari Reel Act? Cek Dulu Faktanya Biar Nggak Rugi Waktu!
  • Inilah Rekomendasi Game Turn Base Android dan PC Terbaik Buat Kalian yang Suka Strategi!
  • Inilah Cara Membuat Sertifikat di Canva dan Ukuran Standar yang Wajib Kalian Tahu
  • Inilah Aturan Zakat yang Bisa Jadi Pengurang Pajak Bruto Kalian, Sudah Tahu Belum?
  • Inilah Data Pendaftar KIP Kuliah 2026 Jalur SNBP dan Bocoran Kriteria yang Lolos!
  • Inilah Game Silent Hill: Townfall, Teror Psikologis Baru yang Bakal Bikin Kalian Gemetar di Tahun 2026!
  • Inilah Trailer Mortal Kombat 2, Johnny Cage Resmi Gabung dan Siap Hadapi Shao Kahn!
  • Inilah Spesifikasi Lengkap Samsung Galaxy S26 yang Baru Meluncur, Ternyata Harganya Naik Segini!
  • Inilah Cara Mematikan MSA Xiaomi Supaya HP Nggak Lemot dan Bebas Iklan, Ternyata Langkahnya Simpel Banget!
  • Inilah Kronologi Mobil Calya Plat D yang Viral Lawan Arus di Jakpus, Ternyata Bawa Banyak Plat Palsu!
  • Inilah Axioo Hype AI 5, Laptop AI Canggih yang Nggak Bikin Kantong Bolong!
  • Ini Loh Kejahatan Modus Phishing Google Tasks Terbaru yang Bisa Nguras Data Perusahaan Kalian
  • Inilah Poco X7 5G dan M7 Pro 5G, HP Gaming Performa Ekstrem yang Ngebikin Mabar Kalian Jadi Anti Lag!
  • Inilah Cara Mengubah Lahan Kosong Jadi Uang Lewat Strategi Land Banking
  • Ini Trik Supaya Gajian YouTube Shorts Tembus Puluhan Juta dari Penonton Bule!
  • Jangan Sampai Keliru! Begini Cara Cek Total Jam Linear dan Non Linear di EMIS GTK IMP 2026
  • Cuma Nonton Drama Pendek Bisa Cair Uang Tunai? Bongkar Habis Kebenaran Aplikasi FunFlick di Sini!
  • Apa itu Resetter Epson L3210?
  • Ini Loh Ukuran A4, F4, A3, B5, A5 di Canva Biar Hasil Cetakan Kalian Nggak Terpotong!
  • Inilah Cara Transfer Pulsa Telkomsel Paling Update 2026, Lengkap dengan Biaya dan Syarat Terbarunya!
  • Ubuntu 26.04 LTS Snapshot 4 Release Notes and Download Guide
  • What’s New in Calibre 9.4? A Deep Dive into the Latest E-Book Progress Tracking Features
  •  How to Fix Clipchamp No Internet Connection Error on Windows
  • Why Are Sudo Password Asterisks Missing in Ubuntu 26.04?
  • Omarchy Linux 3.4 Released: Arch-Based OS with New Features Explained
  • Prompt AI Menyusun Script Pola Suara Karakter agar Brand Jadi Ikonik
  • Prompt AI untuk Merancang Karakter Brand yang Ikonik
  • Prompt AI Audit Konten Sesuai Karakter Brand
  • Prompt AI Merubah Postingan LinkedIn Jadi Ladang Diskusi dengan ChatGPT
  • Prompt AI: Paksa Algoritma LinkedIn Promosikan Konten Kalian
  • 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
Beli Pemotong Rumput dengan Baterai IRONHOOF 588V Mesin Potong Rumput 88V disini https://s.shopee.co.id/70DBGTHtuJ
Beli Morning Star Kursi Gaming/Kantor disini: https://s.shopee.co.id/805iTUOPRV

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