I- Bash uhlelo lwekhompyutha olunomsebenzi wokuhumusha imiyalo. Isekelwe kugobolondo le -Unix futhi yabhalelwa iphrojekthi ye-GNU , iyisihumushi somyalo ozenzakalelayo ekusakazweni okuningi kwe-GNU/Linux . Igama layo liyisifinyezo se- Bourne-Again Shell , ukudlala ngamagama (born-again okusho ukuzalwa kabusha) okubhekisela kugobolondo le-Bourne (sh) , elalingomunye wabahumushi bokuqala abakhulu be-Unix.
Namuhla sizokukhombisa ezinye izikripthi zegobolondo ezingaba usizo kakhulu kubathuthukisi. Iningi lazo lisebenza kunoma yiliphi igobolondo le -Unix , yize ezinye zidinga ukuthi iBash isebenze ngqo.
Vimbela abasebenzisi abangenalo ilungelo ekusebenziseni iskripthi
Eminye imibhalo yenza imisebenzi yokuphatha ngakho-ke singafuna kuphela umsebenzisi wezimpande ukusebenzisa iskripthi. Kuleso simo singasebenzisa into enjengale:
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "Este script debe ser ejecutado por el usuario root" 1>&2
exit 1
fi
Vumela ukwenziwa kweskripthi kumsebenzisi othile kuphela
Ngokufana nekhodi engenhla, singahle sifune kuphela umsebenzisi othile ukusebenzisa iskripthi. Sikwenza lokhu:
#!/bin/bash
AUTHORIZED_USER="usuario_permitido"
if [ $USER != $AUTHORIZED_USER ]; then
echo "Este script debe ser ejecutado por el usuario $AUTHORIZED_USER" 1>&2
exit 1
fi
Qinisekisa ukuthi insiza / inqubo iyasebenza
Uma sifuna ukwazi ukuthi kukhona yini izinqubo ezivela kusevisi noma ohlelweni olusebenzayo, singasebenzisa lesi sikripthi (kulokhu, sihlola ukuthi i -Apache daemon iyasebenza) :
#!/bin/sh
SERVICE='httpd'
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
echo "El servicio $SERVICE esta ejecutandose"
else
echo "Chanfle! El servicio $SERVICE esta detenido"
fi
Dala ifayela lokukhiya
Kwesinye isikhathi kufanele siqiniseke ukuthi iskripthi asihambi izikhathi ezimbili noma ngaphezulu ngasikhathi sinye. Ngalokhu singasebenzisa amafayela wokukhiya. Le nguqulo elula yeskripthi esivumela ukuthi senze lokhu:
#!/bin/bash
lockfile=/var/lock/loquesea.lock
if [ ! -e $lockfile ]; then
touch $lockfile
echo "hago muchas cosas importantes aqui"
rm $lockfile
else
echo "ya hay otro proceso corriendo"
fi
Kulesi simo, iskripthi sihlola ukuthi ifayela elithi `loquesea.lock` likhona yini. Uma likhona, iskripthi ASENZI imisebenzi yaso. Uma lingekho, lidala ifayela, lenze imisebenzi edingekayo, bese liyisusa. Kodwa-ke, lokhu akuthembekile ngokuphelele. Bekungenzekani uma iskripthi sethu sivalwa ngokuzumayo ngenkathi sisebenza?
Kuleso simo ifayili lokukhiya belingeke lisuswe, ngakho-ke ngeke lisivumele ukuthi sisebenzise iskripthi futhi. Ukumboza lawo macala, singasebenzisa umyalo wesicupho esivumela ukuthi senze imiyalo uma iskripthi sethu siphela ngokungalindelekile. Le inguqulo esezingeni eliphakeme kakhulu futhi esindisa i-PID yeskripthi esiyisebenzisa ngaphakathi kwefayela lokukhiya:
#!/bin/bash
lockfile=/var/lock/loquesea.lock
if ( set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null;
then
trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT
echo "hago muchas cosas aqui tranquilamente"
rm -f "$lockfile"
trap - INT TERM EXIT
else
echo "Ya hay otro proceso de este script ejecutandose"
echo "corriendo con el PID: $(cat $lockfile)"
fi
Ake siwuqonde kangcono umyalo we -`trap` . I-syntax yawo ngokuyisisekelo yile: `trap command signal [signal …];` lapho i-`signal` iyisignali yokuqeda ofuna ukuyithwebula. Uma ufuna ukubona uhlu lwezimpawu ezitholakalayo, ungasebenzisa umyalo we-`kill -l`. Esibonelweni esedlule, izimpawu ezisetshenzisiwe kwakuyi-`INT` (ithwebula isignali yokuqeda ekhiqizwe yi-Ctrl+c) , `TERM` (ukuqeda ekhiqizwe ngumyalo we-`kill`) , kanye ne-`EXIT` (ukuqeda kweskripthi okuvamile, kungaba ngoba akusekho imigqa okufanele isetshenziswe noma ngoba ihlangana nomyalo we-`exit`).
Izinketho zemenyu
Ukwenza imenyu lapho sivumela umsebenzisi ukuthi akhethe uchungechunge lwezinketho esingasebenzisa uhlelo olulandelayo:
#!/bin/bash
clear
while :
do
echo " Escoja una opcion "
echo "1. quien soy?"
echo "2. cuanto espacio tengo"
echo "3. que es esto?"
echo "4. Salir"
echo -n "Seleccione una opcion [1 - 4]"
read opcion
case $opcion in
1) echo "este eres:";
whoami;;
2) echo "tienes esto";
df;;
3) uname -r;;
4) echo "chao";
exit 1;;
*) echo "$opc es una opcion invalida. Es tan dificil?";
echo "Presiona una tecla para continuar...";
read foo;;
esac
done
Cela isiqinisekiso ngaphambi kokuqalisa iskripthi
Kwesinye isikhathi kuyasiza ukuthi umsebenzisi aqinisekise ukwenziwa kweqoqo lezitatimende, okungukuthi, umlayezo ojwayelekile ocela umsebenzisi ukuthi abhale yebo noma cha. Singakwenza lokhu kanjena:
#!/bin/bash
while true; do
echo
read -p "esta seguro de hacer lo que sea que vaya a hacer " yn
case $yn in
yes ) break;;
no ) exit;;
* ) echo "por favor responda yes o no";;
esac
done
echo "si se ejecuta esto es que aceptaste"
Ukuphela kwesihloko. Kuhle nje 
Hlela: Ngidinga ukuqaphela izikhala namathebhu, ngoba ngesizathu esithile, angiziqondi kahle —