Argumen, nilai kembali, dan cakupan

Pengantar Bash Scripting

Alex Scriven

Data Scientist

Meneruskan argumen ke fungsi Bash

Meneruskan argumen ke fungsi mirip dengan ke skrip: gunakan $1.

Anda juga dapat memakai properti khusus ARGV yang sudah dibahas:

  • Tiap argumen diakses lewat $1, $2.
  • $@ dan $* memberi semua argumen di ARGV
  • $# memberi jumlah argumen
Pengantar Bash Scripting

Contoh penerusan argumen

Mari 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
Pengantar Bash Scripting

Cakupan dalam pemrograman

 

'Cakupan' dalam pemrograman adalah seberapa mudah sebuah variabel dapat diakses.

  • 'Global' berarti dapat diakses di mana saja dalam program, termasuk di dalam FOR, IF, fungsi, dll.
  • 'Lokal' berarti hanya dapat diakses pada bagian tertentu dari program.

Mengapa ini penting? Jika Anda mengakses sesuatu yang hanya bersifat lokal, program bisa gagal dengan error!

Pengantar Bash Scripting

Cakupan di fungsi Bash

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.

Pengantar Bash Scripting

Membatasi cakupan di fungsi Bash

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!

Pengantar Bash Scripting

Nilai kembali

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:

  1. Menetapkan ke variabel global
  2. echo nilai yang diinginkan (baris terakhir di fungsi) lalu tangkap dengan subshell
Pengantar Bash Scripting

Error nilai kembali

Mari 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?

  1. Terjadi error saat memanggil fungsi
    • Skrip mencoba mencari 'echlo' sebagai program, tetapi tidak ada
  2. Nilai kembali di $? adalah 127 (error)
Pengantar Bash Scripting

Mengembalikan dengan benar

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
  • Lihat, kita tidak lagi membuat variabel perantara.
Pengantar Bash Scripting

Ayo berlatih!

Pengantar Bash Scripting

Preparing Video For Download...