Sintaks:
eval [hujah…]Di sini, argumen diuraikan dan digabungkan menjadi rentetan yang akan dijalankan oleh cangkang. 'eval' mengembalikan kod status keluar setelah melaksanakan perintah. 'eval' mengembalikan 0 sebagai kod status keluar jika tiada argumen diberikan atau hanya argumen nol yang diberikan.
Contoh-1: Jalankan perintah 'wc' menggunakan 'eval'
Katakan fail teks bernama "jabatan.txt”Mengandungi teks berikut. Jumlah baris fail dapat dihitung dengan perintah 'wc'.
jabatan.txt
CSEEEE
ETE
BAHASA INGGERIS
BBA
FARMASI
Perintah berikut akan menyimpan perintah 'wc' untuk mengira jumlah baris nombor fail, jabatan.txt kepada pemboleh ubah, $ mycommand.
$ mycommand = "wc -l jabatan.txt "Perintah 'eval' berikut akan menjalankan perintah 'wc' dan mencetak jumlah baris.
$ eval $ mycommandPengeluaran:
Hasilnya menunjukkan bahawa jabatan.txt fail mempunyai 6 baris.
Examplel-2: Jalankan arahan 'expr' menggunakan 'eval'
Buat fail bash bernama paling tinggi.sh dan tambahkan skrip berikut. Skrip ini akan memberikan dua nilai integer ke dalam pemboleh ubah $ x dan $ y. Perintah 'expr' dan 'echo' ditugaskan ke dalam dua pemboleh ubah, $ c1 dan $ c2 yang dilaksanakan kemudian dengan menggunakan perintah 'eval'.
paling tinggi.sh
#!/ bin / bash# Memulakan pemboleh ubah x dan y
x = 5
y = 15
# Pemboleh ubah perintah pertama digunakan untuk menetapkan perintah 'expr' untuk menambahkan nilai $ x dan $ y
c1 = "'expr $ x + $ y'"
# Pemboleh ubah arahan kedua digunakan untuk menetapkan perintah 'echo'
c2 = "gema"
# 'eval' akan mengira dan mencetak jumlah $ x dan $ y dengan melaksanakan perintah $ c1
dan pemboleh ubah $ c2
eval $ c2 $ c1
Jalankan skrip.
$ bash paling tinggi.shJumlah 5 dan 15 adalah 20 yang ditunjukkan dalam output.
Contoh-3: Mencetak nilai pemboleh ubah yang diberikan dalam pemboleh ubah lain
Buat skrip bash bernama evaltest2.sh dengan skrip berikut. Di sini, satu pemboleh ubah digunakan untuk menetapkan nama pemboleh ubah lain yang mengandungi data rentetan. Perintah 'eval' akan mencetak nilai pemboleh ubah yang mengandungi nama pemboleh ubah lain sebagai kandungan.
evaltest2.sh
#!/ bin / bash# Tetapkan nilai rentetan ke dalam pemboleh ubah, $ str1
str1 = "Skrip Shell"
# Tetapkan nama pemboleh ubah, "str1" kepada pemboleh ubah $ str2
str2 = str1
# Simpan perintah ke dalam pemboleh ubah, perintah $
perintah = "gema"
Perintah # 'eval' akan melaksanakan perintah 'echo' dan mencetak nilai pemboleh ubah
yang mengandungi pemboleh ubah lain
eval $ command \ $ $ str2
Jalankan skrip.
$ bash evaltest2.shNilai pemboleh ubah, $ str1 dicetak.
Terdapat cara lain untuk mengakses nilai pemboleh ubah yang namanya adalah nilai pemboleh ubah lain. Menggunakan '!'simbol nilai pemboleh ubah jenis ini dapat diakses. Perintah berikut dapat digunakan sebagai alternatif dari skrip sebelumnya dan outputnya akan sama.
$ str1 = "Skrip Shell"; str2 = str1; arahan = "echo"; eval $ perintah $ !str2Contoh-4: Buat rangkaian pemboleh ubah dengan nilai dan hitung jumlah nilai menggunakan perintah 'eval'
Buat skrip bash bernama evaltest3.sh dan tambahkan skrip berikut. Skrip ini akan membuat rangkaian pemboleh ubah dan menyimpan nilai ke dalam pemboleh ubah menggunakan perintah 'eval'. Nilai pemboleh ubah akan ditambah dan disimpan ke dalam pemboleh ubah bernama $ sum. Seterusnya, perintah 'echo' dengan nilai string ditugaskan ke dalam pemboleh ubah yang digunakan dalam perintah 'eval' untuk mencetak nilai pemboleh ubah $ sum.
evaltest3.sh
#!/ bin / bash# Permulaan jumlah $ pembolehubah dengan nilai 0
jumlah = 0
# Nyatakan gelung untuk yang akan berulang selama 4 kali
untuk n dalam 1… 4
buat
# Buat empat pemboleh ubah menggunakan perintah eval
eval x $ n = $ n
# Tambahkan nilai pemboleh ubah dengan jumlah $
jumlah = $ (($ jumlah + $ x $ n))
selesai
# Tetapkan arahan 'echo' dengan rentetan menjadi pemboleh ubah
command = "echo 'Hasil jumlah ='"
Perintah # 'eval' mencetak nilai jumlah menggunakan pemboleh ubah
eval $ perintah $ jumlah
Jalankan skrip.
$ bash evaltest3.shJumlah empat pemboleh ubah ialah, 1 + 2 + 3 + 4 = 10 yang dicetak.
Contoh-5: Menggunakan arahan 'eval' untuk membuang senarai fail
Buat fail bash bernama evaltest4.sh dengan skrip berikut. Skrip ini akan membaca tiga argumen baris perintah sebagai nama fail yang akan dikeluarkan dan menyimpan nilai argumen ke dalam pemboleh ubah larik, $ fn. Perintah 'rm' disimpan dalam pemboleh ubah, perintah $. Untuk loop dinyatakan di sini untuk mengambil setiap nama fail dan membuang fail menggunakan perintah 'eval' jika fail tersebut ada.
evaltest4.sh
#!/ bin / bash#Menyatakan array
menyatakan -A fn
# Baca tiga argumen baris perintah dan simpan menjadi tiga indeks larik
fn [0] = $ 1
fn [1] = $ 2
fn [2] = $ 3
# Simpan arahan hapus ke dalam pemboleh ubah
perintah = "rm"
# untuk gelung akan berulang selama tiga kali untuk membaca tiga elemen array
untuk indeks dalam 0 1 2
buat
# Periksa fail ada atau tidak wujud
jika [[-f $ fn [$ index]]]; kemudian
# jika fail itu ada maka hapus fail tersebut
eval $ command $ fn [$ index]
# Maklumkan kepada pengguna bahawa fail tersebut dikeluarkan
echo "$ fn [$ index] dihapuskan."
Lain
#Informasikan kepada pengguna bahawa fail tersebut tidak ada
echo "$ fn [$ index] tidak wujud."
fi
selesai
Jalankan skrip.
$ bash evaltest4.tanda sh.item docx.produk txt.docxDi sini, tiga nama fail disediakan pada masa melaksanakan skrip. Output menunjukkan bahawa tanda.docx dan produk.docx ada di lokasi semasa dan fail dikeluarkan dan, item.txt tidak wujud di lokasi semasa.
Kesimpulannya
Sebarang arahan bash dapat dijalankan dengan perintah 'eval' dengan menyatakan sebagai string. Perintah 'eval' digunakan dalam tutorial ini untuk melaksanakan perintah bash yang berbeza dan membuat serangkaian pemboleh ubah. Penggunaan arahan 'eval' akan dihapus untuk pengguna dan mereka akan dapat menggunakan perintah ini untuk pelbagai tujuan setelah membaca tutorial ini.