GNU/Linux >> Belajar Linux >  >> Linux

Tutorial langkah demi langkah skrip shell

Dalam tutorial ini, kita akan berbicara tentang skrip shell dan cara membuat skrip shell pertama Anda. Mereka disebut skrip shell secara umum, tetapi kami akan menyebutnya skrip Bash karena kami akan menggunakan Bash di antara shell Linux lainnya.

Ada zsh, tcsh, ksh, dan shell lainnya.

Pada postingan sebelumnya, kita telah melihat cara menggunakan shell Bash dan cara menggunakan perintah Linux.

Konsep skrip Bash adalah menjalankan serangkaian Perintah untuk menyelesaikan pekerjaan Anda.

Untuk menjalankan beberapa perintah dalam satu langkah dari shell, Anda dapat mengetiknya dalam satu baris dan memisahkannya dengan titik koma.

pwd ; whoami

Ini adalah skrip Bash!!

Perintah pwd dijalankan terlebih dahulu, menampilkan direktori kerja saat ini, kemudian perintah whoami dijalankan untuk menampilkan pengguna yang sedang login.

Anda dapat menjalankan beberapa perintah sebanyak yang Anda inginkan, tetapi dengan batas. Anda dapat menentukan argumen maksimum menggunakan perintah ini.

 getconf ARG_MAX

Nah, Bagaimana dengan memasukkan perintah ke dalam file, dan ketika kita perlu menjalankan perintah ini, kita menjalankan file itu saja. Ini disebut skrip Bash.

Pertama, buat file baru menggunakan perintah sentuh. Di awal setiap skrip Bash, kita harus menentukan shell mana yang akan kita gunakan karena ada banyak shell di Linux, salah satunya adalah shell Bash.

Shebang skrip shell

Baris pertama yang Anda ketik saat menulis skrip Bash adalah (#!) diikuti dengan shell yang akan Anda gunakan.

#! <===tanda ini disebut shebang.

#!/bin/bash

Jika Anda menggunakan tanda pound (#) di depan baris apa pun di skrip shell Anda, baris ini akan menjadi komentar yang berarti tidak akan diproses, tetapi, baris di atas adalah kasus khusus. Baris ini mendefinisikan shell apa yang akan kita gunakan, yang merupakan shell Bash dalam kasus kita.

Perintah shell dimasukkan satu per baris seperti ini:

#!/bin/bash

# This is a comment

pwd

whoami

Anda dapat mengetik beberapa perintah pada baris yang sama, tetapi Anda harus memisahkannya dengan titik koma, tetapi lebih baik menulis perintah pada baris terpisah; ini akan membuatnya lebih mudah untuk dibaca nanti.

Setel izin skrip

Setelah menulis skrip shell Anda, simpan file tersebut.

Sekarang, atur file itu agar dapat dieksekusi; jika tidak, itu akan memberi Anda izin ditolak. Anda dapat meninjau cara menyetel izin menggunakan perintah chmod.

chmod +x ./myscript

Kemudian coba jalankan dengan hanya mengetiknya di shell:

./myscript

Dan Ya, itu dijalankan.

Buat skrip Bash pertama Anda

Seperti yang kita ketahui dari posting lain, mencetak teks tidak menggunakan

echo

perintah.

Edit file Anda dan ketik ini:

#!/bin/bash

# our comment is here

echo "The current directory is:"

pwd

echo "The user logged in is:"

whoami

Lihat hasilnya:

Sempurna! Sekarang kita dapat menjalankan perintah dan menampilkan teks:

echo

Jika Anda tidak tahu perintah echo atau cara mengedit file, saya sarankan Anda untuk melihat artikel sebelumnya tentang perintah dasar Linux.

Menggunakan variabel

Variabel memungkinkan Anda menyimpan informasi untuk digunakan dalam skrip Anda.

Anda dapat menentukan dua jenis variabel dalam skrip shell Anda:

  • Variabel lingkungan
  • Variabel pengguna

Variabel lingkungan

Terkadang Anda perlu berinteraksi dengan variabel sistem; Anda dapat melakukannya dengan menggunakan variabel lingkungan.

#!/bin/bash

# display user home

echo "Home for the current user is: $HOME"

Perhatikan bahwa kita menempatkan variabel sistem $HOME di antara tanda kutip ganda, dan variabel home akan dicetak dengan benar.

Bagaimana jika kita ingin mencetak tanda dolar itu sendiri?

echo "I have $1 in my pocket"

Karena variabel $1 tidak ada, variabel tersebut tidak akan berfungsi. Lalu bagaimana cara mengatasinya?

Anda dapat menggunakan karakter escape, yaitu garis miring terbalik \ sebelum tanda dolar seperti ini:

echo "I have \$1 in my pocket"

Sekarang berhasil!!

Variabel pengguna

Selain itu, Anda dapat mengatur dan menggunakan variabel khusus Anda dalam skrip.

Anda dapat memanggil variabel pengguna dengan cara yang sama seperti ini:

#!/bin/bash

# User variables

grade=5

person="Adam"

echo "$person is a good boy, he is in grade $grade"

chmod +x myscript

./myscript

Pergantian perintah

Anda dapat mengekstrak informasi dari hasil perintah menggunakan substitusi perintah.

Anda dapat melakukan substitusi perintah dengan salah satu metode berikut:

  • Karakter backtick (`).
  • Format $().

Pastikan saat Anda mengetik karakter backtick, itu bukan tanda petik tunggal.

Anda harus menyertakan perintah dengan dua backtick seperti ini:

mydir=`pwd`

Atau sebaliknya:

mydir=$(pwd)

Jadi scriptnya bisa seperti ini:

#!/bin/bash

mydir=$(pwd)

echo $mydir

Anda dapat menyimpan output dari perintah di variabel mydir.

Penghitungan matematika

Anda dapat melakukan perhitungan matematika dasar menggunakan format $(( 2 + 2)):

#!/bin/bash

var1=$(( 5 + 5 ))

echo $var1

var2=$(( $var1 * 2 ))

echo $var2

Semudah itu.

pernyataan jika-maka

Skrip shell Anda akan membutuhkan pernyataan bersyarat. Seperti jika nilainya lebih kecil dari 10, lakukan ini yang lain lakukan itu. Anda dapat membayangkan logika apa pun yang Anda inginkan.

Struktur paling dasar dari pernyataan if-then adalah seperti ini:

jika perintah; lalu

lakukan sesuatu

fi

dan ini contohnya:

#!/bin/bash

if whoami; then

	echo "It works"

fi

Sejak

whoami

akan mengembalikan pengguna saya sehingga kondisinya akan kembali benar, dan itu akan mencetak pesan.

Mari gali lebih dalam dan gunakan perintah lain yang kita ketahui.

Periksa apakah ada pengguna

Mungkin mencari pengguna tertentu di file pengguna

/etc/passwd

dan jika ada catatan, beri tahu saya dalam pesan.

#!/bin/bash

user=likegeeks

if grep $user /etc/passwd; then

	echo "No such a user $user"

fi

Kami menggunakan

/etc/passwd

mengajukan. Anda dapat memeriksa tutorial kami tentang perintah grep.

Jika pengguna ada, skrip shell akan mencetak pesan.

Bagaimana jika pengguna tidak ada? Skrip akan keluar dari eksekusi tanpa memberi tahu kami bahwa pengguna tidak ada. Oke, mari kita perbaiki skripnya.

pernyataan jika-maka-lain

Pernyataan if-then-else mengambil struktur berikut:

jika perintah; lalu

lakukan sesuatu

lain

lakukan hal lain

fi

Jika perintah pertama berjalan dan mengembalikan nol, yang berarti berhasil, perintah tersebut tidak akan mengenai perintah setelah pernyataan else; sebaliknya, jika pernyataan if mengembalikan bukan nol; yang berarti kondisi pernyataan gagal, dalam hal ini shell akan menekan perintah setelah pernyataan lain.

#!/bin/bash

user=anotherUser

if grep $user /etc/passwd; then

	echo "The user $user Exists"

else

	echo "The user $user doesn’t exist"

fi

Kami baik-baik saja sampai sekarang, teruslah bergerak.

Sekarang, bagaimana jika kita membutuhkan lebih banyak pernyataan lain.

Nah, itu mudah, kita bisa mencapainya dengan membuat pernyataan if seperti ini:

jika kondisi1; lalu

perintah

kondisi elif2; lalu

perintah

fi

Jika perintah pertama mengembalikan nol; berarti berhasil, ia akan menjalankan perintah setelahnya, jika tidak, jika perintah kedua mengembalikan nol, ia akan menjalankan perintah setelahnya, jika tidak, jika tidak ada yang mengembalikan nol, ia akan menjalankan perintah terakhir saja.

#!/bin/bash

user=anotherUser

if grep $user /etc/passwd; then

	echo "The user $user Exists"

elif ls /home; then

	echo "The user doesn’t exist"

fi

Anda dapat membayangkan skenario apa pun, mungkin jika pengguna tidak ada, buat pengguna menggunakan

useradd

memerintahkan atau melakukan hal lain.

Gabungkan pengujian

Anda dapat menggabungkan beberapa pengujian menggunakan perintah AND (&&) atau OR (||).

#!/bin/bash

dir=/home/likegeeks

name="likegeeks"

if [ -d $dir ] && [ -n $name ]; then

	echo "The name exists and the folder $dir exists."

else

	echo "One test failed"

fi

Contoh ini akan mengembalikan nilai true hanya jika kedua pengujian berhasil; jika tidak, itu akan gagal.

Anda juga dapat menggunakan OR (||) dengan cara yang sama:

#!/bin/bash

dir=/home/likegeeks

name="likegeeks"

if [ -d $dir ] || [ -n $name ]; then

	echo "Success!"

else

	echo "Both tests failed"

fi

Contoh ini akan mengembalikan kesuksesan jika salah satu atau keduanya berhasil.

Itu akan gagal hanya jika keduanya gagal.

Perbandingan numerik

Anda dapat melakukan perbandingan numerik antara dua nilai numerik menggunakan pemeriksaan perbandingan numerik seperti ini:

number1 -eq number2 Memeriksa apakah angka1 sama dengan angka2.

number1 -ge number2 Memeriksa apakah angka1 lebih besar dari atau sama dengan angka2.

number1 -gt number2 Memeriksa apakah angka1 lebih besar dari angka2.

number1 -le number2 Memeriksa apakah angka1 lebih kecil dari atau sama dengan angka2.

number1 -lt number2 Memeriksa apakah angka1 lebih kecil dari angka2.

number1 -ne number2 Memeriksa apakah angka1 tidak sama dengan angka2.

Sebagai contoh, kita akan mencoba salah satunya, dan sisanya sama.

Perhatikan bahwa pernyataan perbandingan dalam tanda kurung siku seperti yang ditunjukkan.

#!/bin/bash

num=11

if [ $num -gt 10]; then

	echo "$num is bigger than 10"

else

	echo "$num is less than 10"

fi

Jumlahnya lebih besar dari sepuluh, sehingga akan menjalankan pernyataan pertama dan mencetak gema pertama.

Perbandingan string

Anda dapat membandingkan string dengan salah satu cara berikut:

string1 =string2 Memeriksa apakah string1 identik dengan string2.

string1 !=string2 Memeriksa apakah string1 tidak identik dengan string2.

string1

string1> string2 Memeriksa apakah string1 lebih besar dari string2.

-n string1 Memeriksa apakah string1 lebih panjang dari nol.

-z string1 Memeriksa apakah string1 panjangnya nol.

Kita dapat menerapkan perbandingan string ke contoh kita:

#!/bin/bash

user="likegeeks"

if [ $user = $USER ]; then

	echo "The user $user&nbsp; is the current logged in user"

fi

Satu catatan rumit tentang lebih besar dari dan kurang dari untuk perbandingan string, mereka HARUS diloloskan dengan garis miring terbalik karena jika Anda menggunakan simbol lebih besar dari saja, itu menunjukkan hasil yang salah.

Jadi Anda harus melakukannya seperti itu:

#!/bin/bash

v1=text

v2="another text"

if [ $v1 \> "$v2" ]; then

	echo "$v1 is greater than $v2"

else

	echo "$v1 is less than $v2"

fi

Ini berjalan, tetapi memberikan peringatan ini:

./myscript: line 5: [: too many arguments

Untuk memperbaikinya, bungkus $vals dengan tanda kutip ganda, memaksanya untuk tetap menjadi satu string seperti ini:

#!/bin/bash

v1=text

v2="another text"

if [ $v1 \> "$v2" ]; then

	echo "$v1 is greater than $v2"

else

	echo "$v1 is less than $v2"

fi

Catatan penting tentang lebih besar dari dan kurang dari untuk perbandingan string. Periksa contoh berikut untuk memahami perbedaannya:

#!/bin/bash

v1=Likegeeks

v2=likegeeks

if [ $v1 \> $v2 ]; then

	echo "$v1 is greater than $v2"

else

	echo "$v1 is less than $v2"

fi

sort myfile

likegeeks

Likegeeks

Kondisi pengujian menganggap huruf kecil lebih besar dari huruf kapital.

sort

Tidak seperti perintah sort, yang melakukan sebaliknya.

Kondisi pengujian didasarkan pada urutan ASCII.

sort

Sedangkan perintah sortir berdasarkan urutan penomoran dari pengaturan sistem.

Perbandingan file

Anda dapat membandingkan dan memeriksa file menggunakan operator berikut:

-d my_file Memeriksa apakah itu sebuah folder.

-e my_file Memeriksa apakah file tersedia.

-f my_file Memeriksa apakah itu sebuah file.

-r my_file Memeriksa apakah dapat dibaca.

file_saya nt my_file2 Memeriksa apakah my_file lebih baru daripada my_file2.

file_saya ot my_file2 Memeriksa apakah my_file lebih lama daripada my_file2.

-O my_file Memeriksa apakah pemilik file dan pengguna yang login cocok.

-G my_file Memeriksa apakah file dan pengguna yang masuk memiliki grup yang sama.

Seperti yang tersirat, Anda tidak akan pernah melupakannya.

Mari kita pilih salah satunya dan ambil sebagai contoh:

#!/bin/bash

mydir=/home/likegeeks

if [ -d $mydir ]; then

	echo "Directory $mydir exists"

	cd $mydir

	ls

else

	echo "NO such file or directory $mydir"

fi

Kami tidak akan mengetik semuanya sebagai contoh. Anda cukup mengetik perbandingan antara tanda kurung siku dan menyelesaikan skrip Anda secara normal.

Ada beberapa fitur if-then lanjutan lainnya, tetapi mari kita buat di postingan lain.

Itu untuk saat ini. Saya harap Anda menikmatinya dan terus berlatih lagi dan lagi.

Terima kasih.


Linux
  1. Deskriptor File &Skrip Shell?

  2. Bagaimana Mengurai Json Dengan Shell Scripting Di Linux?

  3. Mekanisme Blok Pernyataan Dalam Scripting Shell?

  1. Menampilkan Konten Bernilai Tertinggi Dalam Scripting Shell?

  2. Haruskah Saya Menggunakan Apt Atau Apt-get Di Shell Scripting?

  3. Apa itu penggunaan () dalam skrip shell?

  1. Bagaimana Membandingkan String di Bash Shell Scripting

  2. Simbol Backtick (`) di Linux Shell Scripting

  3. Temukan dan ganti dalam skrip shell