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:
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:
Ini berjalan, tetapi memberikan peringatan ini:
Untuk memperbaikinya, bungkus $vals dengan tanda kutip ganda, memaksanya untuk tetap menjadi satu string seperti ini:
Catatan penting tentang lebih besar dari dan kurang dari untuk perbandingan string. Periksa contoh berikut untuk memahami perbedaannya:
likegeeks
Likegeeks
Kondisi pengujian menganggap huruf kecil lebih besar dari huruf kapital.
Tidak seperti perintah sort, yang melakukan sebaliknya.
Kondisi pengujian didasarkan pada urutan ASCII.
Sedangkan perintah sortir berdasarkan urutan penomoran dari pengaturan sistem.
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:
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.#!/bin/bash
user="likegeeks"
if [ $user = $USER ]; then
echo "The user $user is the current logged in user"
fi
#!/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
./myscript: line 5: [: too many arguments
#!/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
#!/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
sort
sort
Perbandingan file
#!/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