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

  • Inilah Alasan Kenapa Sinkhole Sering Muncul di Indonesia dan Cara Mengenali Tanda-Tandanya Supaya Kalian Tetap Aman
  • Inilah Program PJJ 2026 untuk Anak Tidak Sekolah, Cara Mudah Masuk SMA Tanpa Harus ke Kelas Tiap Hari!
  • Inilah Program SPMB 2026 PJJ Khusus Anak Tidak Sekolah, Solusi Buat yang Pengen Balik Belajar!
  • Inilah Cara Kuliah di Al-Azhar Mesir Lewat Jalur Kemenag 2026, Lengkap dengan Syarat dan Jadwalnya!
  • Inilah Jadwal Lengkap Jalur Mandiri Unud 2026, Persiapkan Diri Kalian Sebelum Menyesal!
  • Inilah 8 Universitas Swasta Terbaik di Indonesia Versi THE Asia University Rankings 2026 yang Bisa Jadi Pilihan Kuliah Kamu
  • Inilah Jadwal Terbaru SSU ITB 2026 yang Diperpanjang, Lengkap dengan Syarat dan Rincian Biayanya!
  • Inilah 10 Jurusan Kuliah Paling Dicari Perusahaan Tahun 2026, Cek Daftarnya Biar Nggak Salah Pilih!
  • Inilah Cara Daftar Beasiswa Tut Wuri Handayani 2026, Kesempatan Emas Buat PNS Kemendiktisaintek Tingkatkan Karier!
  • Inilah Ketentuan Lengkap TKA Susulan 2026 SD dan SMP, Cek Syarat dan Jadwal Resminya Di Sini!
  • Inilah Kurikulum Berbasis Cinta Madrasah: Panduan Lengkap dan Link Download PDF Terbaru 2026
  • Inilah Kronologi Mencekam Kecelakaan KA Argo Bromo Anggrek Tabrak KRL di Bekasi Timur yang Bikin Jalur Kereta Lumpuh Total
  • Inilah Alasan Kenapa Hari Libur dan Tanggal Penting Selalu Ditulis Pakai Warna Merah di Kalender
  • Inilah Cara Daftar Jalur Prestasi Politeknik PU Semarang 2026, Kesempatan Kuliah di Kampus Kementerian PU!
  • Inilah Cara Cek Bansos PKH dan BPNT 2026 Lewat HP, Lengkap dengan Jadwal Cair dan Besaran Dananya!
  • Inilah Alasan Kemdiktisaintek Bakal Tutup Banyak Jurusan Kuliah yang Nggak Relevan dengan Industri
  • Inilah Status Libur Hari Pendidikan Nasional 2026 dan Sejarah Penting di Baliknya
  • Inilah Daftar Libur Mei 2026 yang Bikin Full Senyum, Siapkan Rencana Liburan Kalian Sekarang!
  • Inilah Daftar Universitas Terbaik di Jepang Versi THE Asia University Rankings 2026, Kampus Mana yang Jadi Incaran Kalian?
  • Inilah Alasan Kenapa Kemdiktisaintek Bakal Tutup Sejumlah Prodi dan Fokus ke 8 Industri Strategis
  • Inilah Sosok Richard Aldrich McCurdy, Penguasa Asuransi yang Terjerat Skandal di Masa Gilded Age
  • Inilah Alasan Suhu Bumi Naik Drastis dan Cara Kita Menghadapi Ancaman Cuaca Ekstrem
  • Apa itu Pasukan Perdamaian PBB?
  • Inilah 25 Universitas Paling Internasional di Dunia 2026, Ternyata Kampus di Asia Mulai Merajai!
  • Inilah 10 PTS Terbaik di Indonesia Versi Webometrics 2026 yang Bisa Jadi Referensi Kalian
  • Inilah Cara Daftar Kuliah di Universitas Al-Azhar Mesir 2026 Lewat Jalur Resmi Kemenag
  • Inilah Daftar 20 PTN Terbaik Indonesia Versi Webometrics 2026, Kampus Impian Kalian Ada Nggak?
  • Inilah Profil Donny Sucahya, Sosok Pengusaha Muda yang Viral Karena Bisnis dan Pernikahannya
  • Inilah Alasan Kenapa Belalang Daun Bisa Berubah Warna dari Pink ke Hijau, Ternyata Mirip Daun!
  • Inilah Kenapa eBay Error dan Mengenal The Hacktivist Group 313 yang Mengklaim Bertanggung Jawab Atas Gangguan Global Tersebut
  • How to Level Up Your PC Gaming Experience with the New Valve Steam Controller and Its Advanced Features
  • 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 create high-quality cinematic AI videos and realistic avatars using HeyGen and the Seedance 2.0 model
  • How to build an AI chatbot for your business in just minutes without writing a single line of code
  • How to Master Answer Engine Optimization with HubSpot AEO Tool
  • How to Use GPT-5.5 and Claude Opus 4.7 Together to Maximize Your Workflow Productivity and Code Quality
  • Claude Tutorial: How to Build Your First SaaS Business Using AI Without Coding
  • 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