Cara Menjalankan Perintah dari Dalam Script Shell

How Execute Commands From Within Shell Script



Di bash, menjalankan perintah dari skrip shell dapat sedikit menakutkan pada awalnya dan mungkin memerlukan lompatan keyakinan. Bagaimanapun, perintah yang dieksekusi dalam skrip bash tidak interaktif. Di sini kita akan meletakkan dasar untuk menjalankan perintah dari dalam skrip shell menjawab pertanyaan berikut tentang perintah: Dari mana asalnya? Apakah mereka? Bagaimana kita menggunakannya dalam skrip?

Dari mana datangnya perintah?

Perintah di bash berasal dari salah satu kategori berikut:







Bash itu sendiri (lihat bawaan)

Bash hadir dengan serangkaian perintahnya sendiri untuk memungkinkan akses ke fitur bawaannya seperti mendeklarasikan array, membaca baris dari file, dan fitur lain yang ada di dalam bash. Kami memanggil perintah dari kategori ini, perintah bash builtin, atau singkatnya builtin.



Dapat dieksekusi di lingkungan Anda (lihat perintah eksternal)

Secara default, bash akan mewarisi variabel tertentu secara default. Ini diamati dalam kasus variabel PATH termasuk lokasi untuk executable yang dirujuk sebagai perintah eksternal di bash. Artinya, jika keriting perintah ada di jalur Anda, itu dapat dieksekusi dari dalam skrip bash dengan cara yang sama seperti dalam mode interaktif. Kami memanggil perintah dari kategori ini, perintah eksternal, atau singkatnya perintah.



Fungsi yang ditentukan pengguna (lihat fungsi)

Sebelum menjalankan perintah eksternal dan bawaan, bash memeriksa apakah suatu fungsi didefinisikan. Jika itu adalah fungsi dijalankan sebagai perintah. Jika tidak, ia melanjutkan ke urutan prioritas untuk perintah. Untuk menjalankan fungsi yang didefinisikan di luar skrip, mereka harus dideklarasikan dengan atribut -x; jika tidak, mereka dapat disertakan menggunakan . Memerintah. Kami memanggil perintah dari kategori ini fungsi atau fungsi yang ditentukan pengguna untuk jangka pendek.





Apa itu perintah?

Perintah adalah kata apa pun yang diperlakukan sebagai satu titik masuk program dalam lingkungan shell. Jika perintah dijalankan, perintah itu sendiri dan argumen opsional diteruskan sebagai parameter posisi, ${0}, ${1}, ${2}, … Parameter posisi ke-nol (${0}) menunjuk perintah itu sendiri dan tidak berubah dalam konteks. Artinya, tidak seperti parameter posisi dalam fungsi, ${1}, ${2}, … yang dapat berubah tergantung pada konteksnya, ${0} tidak berubah di antara pemanggilan fungsi.

Perintah dicakup tergantung pada lokasi deklarasi dan atribut yang ditetapkan sebagai global, bawaan ke bash, atau lokal ke program bash Anda.



Berikut adalah daftar jenis perintah yang perlu diketahui.

Perintah bawaan

Ini adalah warga kelas satu dari alam semesta bash, termasuk karakter seperti '.' ':' '[' ']' dan kata-kata yang dicadangkan seperti menyatakan dalam bash . Anda mengandalkan perintah ini, yang terdapat dalam daftar perintah bash bawaan, agar tersedia untuk digunakan dalam skrip bash Anda.

Bergantung pada penunjukan dan nomor versi juru bahasa bash Anda, beberapa perintah mungkin tidak tersedia.

Perintah eksternal

Perintah eksternal adalah executable yang dapat diakses di luar skrip bash seperti curl. Tidak seperti fungsi, perintah eksternal tidak disimpan sebagai variabel.

Semakin rendah prioritas suatu jenis perintah, semakin lambat perintah tersebut dapat ditafsirkan. Perintah eksternal memiliki urutan prioritas terendah di bash. Yaitu sebelum menjalankan perintah eksternal, interpreter bash, akan mencari fungsi, lalu bawaan, dan akhirnya mencoba melihat apakah ada perintah secara eksternal. Jika tidak, Anda akan melihat kesalahan berikut.

bash: perintah yang tidak diketahui:memerintahtidak ditemukan

Dalam skrip bash, fungsi dapat menimpa perilaku perintah eksternal jika berbagi nama yang sama seperti yang telah kita lihat sebelumnya dalam contoh curl bash . Contoh perintah eksternal kustom menggunakan fungsi berikut.

keriting() {
memerintah ${FUNCNAME}...
}

Ini berfungsi karena fungsi memiliki prioritas lebih tinggi daripada perintah eksternal dan bahkan bash bawaan. Batasannya adalah karakter yang diizinkan dalam nama fungsi.

Perhatikan bahwa contoh di atas dapat dilakukan dengan menggunakan alias sebagai berikut.

alias keriting= '
{
ikal ...
}
'

Dalam kasus alias, jenis perintah mungkin berbeda tergantung pada konteks eksekusi, sedangkan dalam kasus perintah eksternal khusus yang menggunakan metode fungsi, titik masuknya selalu sebuah fungsi.

Fungsi

Aturan fungsi di bash. Sebelum melihat perintah bawaan dan eksternal, bash memeriksa apakah suatu fungsi didefinisikan oleh nama fungsi kandidat, kata pertama yang muncul pada baris atau setelah ; karakter yang menunjukkan akhir dari baris perintah. Satu-satunya pengecualian adalah variabel bash yang ditulis dalam huruf kapital semua seperti ${FUNCNAME}.

alias() { NAMA FUNGSI=asdf ;dibuang $ {@ ,,};}
alias keriting='TEST CURL ALIAS' #?

Perintah sederhana

Perintah sederhana didefinisikan di halaman manual bash sebagai kata yang diikuti dengan argumen opsional. Dalam konteks, perintah sederhana dapat berupa builtin, perintah eksternal, atau fungsi.

Cara menjalankan perintah dari dalam skrip bash

Sekarang setelah kami mengetahui jenis perintah apa yang tersedia, kami dapat memperluas cara menggunakannya dalam skrip Anda. Pertama, kita perlu tahu bagaimana prioritas perintah bekerja di bash.

Berikut adalah beberapa cara untuk mengontrol prioritas dalam skrip bash.

Biarkan bash memutuskan

nama_perintah

Untuk sebagian besar, terutama di awal, kami membiarkan bash memutuskan perintah mana yang akan digunakan. Namun, ada beberapa kasus ketika maksud Anda mungkin tidak ditafsirkan dengan benar oleh bash. Seperti halnya ketika nama fungsi dan perintah eksternal atau bawaan tumpang tindih.

Jalankan perintah eksternal

memerintahnama_perintah

Misalkan ada perintah eksternal command_name yang tersedia dalam mode interaktif dan Anda ingin menggunakannya dalam skrip bash. Kami dapat secara eksplisit memberi tahu bash bahwa command_name adalah perintah eksternal menggunakan perintah bawaan.

Contoh perintah eksternal

Contoh perintah eksternal dengan asumsi berikut ini diinstal:

mengajukan
Pergilah
anak ayam
Contoh: Dapatkan jenis file dan info
{ # dapatkan jenis file dan info
mengajukan ${berkas} # (1,2)
}
# (1) perintah, file
# (2) infile={Jalur ke file}
Contoh: Tahap dimodifikasi dan file baru di git
{ # file panggung di git
git tambahkan.# (1)
}
# (1) perintah, git
Contoh: Buat seni ascii menggunakan figlet
{ # buat seni ascii
anak ayam${pesan} # (1,2)
}
# (1) perintah, figlet
# (2) message={Pesan untuk ditampilkan sebagai ascii art}

Jalankan perintah bawaan

bawaannama_perintah

Misalkan command_name adalah salah satu perintah yang didefinisikan sebagai bash bawaan. Untuk memberi tahu bash bahwa kami ingin menjalankan command_name sebagai bawaan, kami menggunakan bawaan bawaan.

Contoh perintah bawaan
Contoh: Berapa banyak bawaan?
bawaan{,}{,,}{,,,} # berapa banyak bawaan?
Contoh: Phantom menyatakan
{
menyatakan() { dibuangups!;}
menyatakan–xfmenyatakan #?
}

Kesimpulan

Cukup mudah untuk menjalankan perintah dari dalam skrip bash shell. Ada tiga jenis perintah utama. Mengetahui bagaimana perintah sederhana ditafsirkan dalam bash dapat mengarah pada peningkatan kontrol atas jenis perintah apa yang dijalankan saat runtime.