Created
January 20, 2011 14:36
-
-
Save gdemir/787968 to your computer and use it in GitHub Desktop.
e-h.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
cevir() { | |
local msj=$1 | |
local default=$2 | |
while :; do | |
echo $msj | |
read cevap | |
[ -z "$cevap" ] && cevap=$default | |
case $cevap in | |
[Ee]) return 0;; | |
[Hh]) return 1;; | |
*) echo "ne diyorsun anlamiyorum";; | |
esac | |
done | |
} | |
if cevir "benle misin değil misin iskoçyalı ?" "e"; then | |
echo "nevet" | |
else | |
echo "nayir" | |
fi |
neden yaptık? bu örnek için söylüyorum, elin alışsın diye (default
'u da local
yapmalıydın). local
ismi üzerinde lokal değişken tanımlıyor. aksi halde tüm o değişkenler global olacaktı. yani cevir
işlevinden sonra da hayatını sürdürecek ve belki bir yerde başını ağrıtacaktı. böyle kısa kodlarda gerek olmayabilir ama uzunca ve bol işlevli kodlarda mutlaka böyle yapman lazım. local
i iki satırda yazma gerekliliğine gelince, bu bir taşınabilirlik meselesi. bash
'te gerekmez (ki ben boş bulunup ona göre açıkladım), fakat POSIX (standart) shell'de gerekir. test için #!/bin/sh
she-bang'i #!/bin/bash
ile değiştir ve gör.
#!/bin/bash
'de local msj=$1
tek satırda hatasız çalıştı hocam, local
'i de anladım ona göre düzenledim.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
düzenledim hocam
local msj=$1'i tek satırda almadı, 2 satırda yaptım.
local msj
msj=$1 diye ama,
bunu neden yaptık, while'in içinde çalışıyor diye mi ?