Bash Es ist ein Computerprogramm, dessen Aufgabe es ist, Befehle zu interpretieren. Es basiert auf der Shell von Unix und wurde für das Projekt geschrieben GNU Dies ist die Standard-Shell in den meisten Distributionen von GNU / Linux. Sein Name ist eine Abkürzung für Bourne-Again-Shell (eine andere Shell Bourne)ein Wortspiel machen (Wiedergeboren bedeutet Wiedergeburt) auf Bourne Shell (sh), der einer der ersten großen Interpreten von Unix war.
Heute werden wir einige Shell-Skripte zeigen, die für Entwickler sehr nützlich sein können. Die meisten arbeiten in jeder Shell Unix, obwohl einige verlangen, dass sie speziell von ausgeführt werden Bash.
Verhindern Sie, dass nicht privilegierte Benutzer das Skript ausführen
Einige Skripte führen administrative Aufgaben aus, sodass möglicherweise nur der Root-Benutzer das Skript ausführen soll. In diesem Fall können wir so etwas verwenden:
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "Este script debe ser ejecutado por el usuario root" 1>&2
exit 1
fi
Erlauben Sie die Skriptausführung nur einem bestimmten Benutzer
Ähnlich wie im obigen Code möchten wir möglicherweise, dass nur ein bestimmter Benutzer das Skript ausführt. Wir machen es so:
#!/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
Stellen Sie sicher, dass ein Dienst / Prozess ausgeführt wird
Wenn wir wissen möchten, ob Prozesse eines Dienstes oder Programms ausgeführt werden, können wir dieses Skript verwenden (In diesem Fall wird überprüft, ob der Dämon von Apache läuft):
#!/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
Erstellen Sie eine Sperrdatei
Manchmal müssen wir sicherstellen, dass das Skript nicht zwei- oder mehrmals gleichzeitig ausgeführt wird. Hierfür können wir die Sperrdateien verwenden. Dies ist eine einfache Version eines Skripts, mit der wir Folgendes tun können:
#!/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
In diesem Fall wird überprüft, ob die Datei was auch immer existieren. Falls vorhanden, führt das Skript seine Aufgaben NICHT aus. Wenn es nicht vorhanden ist, erstellt es die Datei, führt die zum Ausführen erforderlichen Aufgaben aus und entfernt sie. Dies ist jedoch nicht ganz zuverlässig. Was würde passieren, wenn unser Skript während der Ausführung abrupt geschlossen wird?
In diesem Fall würde die Sperrdatei nicht gelöscht und wir könnten das Skript daher nicht erneut ausführen. Um diese Fälle abzudecken, können wir den Befehl trap verwenden, mit dem wir Befehle ausführen können, falls unser Skript unerwartet endet. Dies ist eine erweiterte Version, die auch die PID des Skripts speichert, das sie ausführt, in der Sperrdatei:
#!/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
Lassen Sie uns den Befehl etwas besser verstehen Falle. Die Syntax lautet im Wesentlichen wie folgt: Trap-Befehlssignal [Signal…]; Dabei ist das Signal das Abschlusssignal, das Sie abfangen möchten. Wenn Sie eine Liste der verfügbaren Signale anzeigen möchten, können Sie den Befehl kill -l ausführen. Für den vorherigen Fall wurden die INT-Signale verwendet (erfasst die durch Strg + c erzeugte Terminierung), BEGRIFF (Beendigung durch Kill-Befehl) und EXIT (normale Beendigung eines Skripts, entweder weil keine Zeilen mehr ausgeführt werden müssen oder weil es auf den Befehl exit stößt).
Optionsmenü
Um ein Menü zu erstellen, in dem der Benutzer eine Reihe von Optionen auswählen kann, können Sie das folgende Schema verwenden:
#!/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
Bitten Sie um Bestätigung, bevor Sie ein Skript ausführen
Manchmal ist es nützlich, wenn der Benutzer die Ausführung einer Reihe von Anweisungen bestätigt, dh die typische Nachricht, in der der Benutzer aufgefordert wird, Ja oder Nein einzugeben. Wir können das so machen:
#!/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"
Ende des Artikels. Einfach großartig
Editorial: Sie müssen vorsichtig mit Leerzeichen und Tabulatoren sein, die aus irgendeinem Grund nicht herauskommen