Pengantar Bash Scripting
Alex Scriven
Data Scientist
Meneruskan argumen ke fungsi mirip dengan ke skrip: gunakan $1.
Anda juga dapat memakai properti khusus ARGV yang sudah dibahas:
$1, $2.$@ dan $* memberi semua argumen di ARGV$# memberi jumlah argumenMari teruskan beberapa nama file sebagai argumen ke fungsi untuk demonstrasi. Kita akan melingkarinya dan mencetaknya.
function print_filename { echo "The first file was $1"for file in $@ do echo "This file has name $file" done }print_filename "LOTR.txt" "mod.txt" "A.py"
The first file was LOTR.txt
This file has name LOTR.txt
This file has name mod.txt
This file has name A.py
'Cakupan' dalam pemrograman adalah seberapa mudah sebuah variabel dapat diakses.
Mengapa ini penting? Jika Anda mengakses sesuatu yang hanya bersifat lokal, program bisa gagal dengan error!
Berbeda dari kebanyakan bahasa (mis. Python dan R), semua variabel di Bash bersifat global secara default.
function print_filename { first_filename=$1 }print_filename "LOTR.txt" "model.txt" echo $first_filename
LOTR.txt
Ingat, cakupan global bisa berbahaya karena risikonya lebih tinggi terjadi hal yang tidak diinginkan.
Anda dapat menggunakan kata kunci local untuk membatasi cakupan variabel.
function print_filename { local first_filename=$1 }print_filename "LOTR.txt" "model.txt" echo $first_filename
T: Mengapa tidak ada error, hanya baris kosong?
Jawaban: first_filename terisi dari elemen ARGV global pertama ($1).
Saya menjalankan skrip tanpa argumen (bash script.sh), jadi nilainya kosong. Jadi hati-hati!
Kita sudah tahu cara memasukkan argumen—bagaimana cara mengembalikannya?
Opsi return di Bash hanya untuk status sukses (0) atau gagal (nilai lain 1–255). Nilainya ada di variabel global $?
Pilihan kita:
echo nilai yang diinginkan (baris terakhir di fungsi) lalu tangkap dengan subshellMari lihat error pengembalian:
function function_2 { echlo # An error of 'echo' }function_2 # Call the function echo $? # Print the return value
script.sh: line 2: echlo: command not found
127
Apa yang terjadi?
$? adalah 127 (error)Mari kembalikan nilai dengan benar untuk dipakai di tempat lain memakai echo dan penangkapan dengan subshell:
function convert_temp { echo $(echo "scale=2; ($1 - 32) * 5 / 9" | bc) }converted=$(convert_temp 30) echo "30F in Celsius is $converted C"
30F in Celsius is -1.11 C
Pengantar Bash Scripting