Bash Ez egy számítógépes program, amelynek feladata a megrendelések értelmezése. Az alapja a Unix és a projekthez írták GNÚ az alapértelmezett héj a GNU / Linux. A neve rövidítése Bourne – Again Shell (egy másik héj bourne), játék a szavakkal (az újjászületés újjászületést jelent) én Bourne héja (sh), amely a Unix egyik első nagy tolmácsának számított.
Ma bemutatunk néhány shell szkriptet, amelyek nagyon hasznosak lehetnek a fejlesztők számára. A legtöbb bármilyen héjban dolgozik Unix, bár egyesek megkövetelik, hogy kifejezetten végrehajtja őket Bash.
Akadályozza meg a nem privilegizált felhasználók számára a szkript futtatását
Egyes szkriptek adminisztratív feladatokat hajtanak végre, ezért lehet, hogy csak a root felhasználó akarja futtatni a parancsfájlt. Ebben az esetben valami ilyesmit használhatunk:
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "Este script debe ser ejecutado por el usuario root" 1>&2
exit 1
fi
A szkript futtatását csak egy adott felhasználónak engedélyezheti
A fenti kódhoz hasonlóan előfordulhat, hogy csak egy adott felhasználónak szeretnénk futtatni a parancsfájlt. Így csináljuk:
#!/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
Ellenőrizze, hogy fut-e egy szolgáltatás / folyamat
Ha tudni akarjuk, hogy fut-e valamilyen szolgáltatás vagy program, akkor használhatnánk ezt a szkriptet (ebben az esetben ellenőrzi, hogy a Apache fut):
#!/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
Hozzon létre egy zárfájlt
Néha meg kell győződnünk arról, hogy a szkript nem fut-e egyszerre két vagy több alkalommal. Ehhez felhasználhatjuk a zárfájlokat. Ez egy szkript egyszerű változata, amely lehetővé teszi számunkra ezt:
#!/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
Ebben az esetben ellenőrizzük, hogy a fájl bármi.zár létezik. Ha létezik, a szkript NEM hajtja végre a feladatait. Ha nem létezik, létrehozza a fájlt, futtatja a futtatásához szükséges feladatokat és eltávolítja. De ez nem teljesen megbízható. Mi történne, ha a szkriptünk futása közben hirtelen bezárulna?
Ebben az esetben a zárfájl nem törlődik, és ezért nem teszi lehetővé a parancsfájl újbóli futtatását. Ezeknek az eseteknek a fedezésére használhatnánk a trap parancsot, amely lehetővé teszi számunkra a parancsok végrehajtását abban az esetben, ha a szkriptünk váratlanul véget ér. Ez egy fejlettebb verzió, amely elmenti a zárfájlban végrehajtó szkript PID-jét is:
#!/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
Értsük meg egy kicsit jobban a parancsot csapda. Szintaxisa alapvetően ez: csapda parancs jel [jel ...]; ahol a jel az elkapni kívánt befejező jel. Ha meg akarja tekinteni az elérhető jelek listáját, akkor futtassa a kill -l parancsot. Az előző esethez az INT jeleket használtuk (rögzíti a Ctrl + c által létrehozott felmondást), FELTÉTELEK (a felmondást a kill parancs hozta létre) és EXIT (egy szkript normál megszüntetése, vagy azért, mert nincs több futtatandó sor, vagy mert az exit paranccsal találkozik).
Beállítások menü
A következő sémát használhatjuk olyan menü elkészítéséhez, ahol lehetővé tesszük a felhasználó számára, hogy kiválasszon egy sor lehetőséget:
#!/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
Kérjen megerősítést a szkript futtatása előtt
Néha hasznos, ha a felhasználó megerősíti egy sor utasítás végrehajtását, vagyis azt a tipikus üzenetet, amely az igent vagy nemeket írja be. Ezt így tehetjük:
#!/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"
cikk vége. Egyszerűen nagyszerű
Szerkesztés: Vigyázni kell a szóközökkel és a fülekkel, amelyek valamilyen oknál fogva nem jelennek meg ¬¬