getopts in Bash-Skript verwenden

  1. Parse-Optionen mit Argumenten in Bash getopts
  2. Parse-Optionen ohne Argumente in Bash getopts
getopts in Bash-Skript verwenden

Dieses Tutorial zeigt die Verwendung von getopts in Bash-Skripten, indem Optionen mit Argumenten und Optionen ohne Argumente geparst werden.

Parse-Optionen mit Argumenten in Bash getopts

Vor den Buchstaben n und c steht :. Dies bedeutet, dass wir erwarten, dass immer dann ein Argument bereitgestellt wird, wenn die Option -n oder -c verwendet wird. Die Variable opt enthält den Wert der aktuellen Option, die von getopts geparst wurde.

while getopts n:c: opt
do
    case "${opt}" in
          n) name=${OPTARG};;
          c) country=${OPTARG}
     esac
done
echo "I am $name";
echo  "And I live in $country";

Wenn wir das Skript ausführen, liefert die Option -n John als Argument, während die Option -c Britain als Argument bereitstellt.

bash flags.sh -n John  -c Britain

Ausgabe:

I am John
And I live in Britain

Parse-Optionen ohne Argumente in Bash getopts

Dies verwendet ein einfaches Bash-Skript, das das Skript usage ausgibt, wenn die Option -h übergeben wird, und den Inhalt des Ordners, wenn die Option -p verwendet wird, mit einem angegebenen Pfad zum Ordner als Streit.

Das erste : bedeutet, dass getopts keine Fehler meldet. Stattdessen werden wir die Fehler selbst behandeln. Der Buchstabe p hat ein : davor, der Buchstabe h nicht. Dies bedeutet, dass wir immer dann, wenn die Option -p verwendet wird, ein Argument erwarten, die Option -h jedoch ohne Argument verwendet werden kann.

Wenn die Option -h übergeben wird, ruft sie die Funktion usage auf. Die Option -p weist das übergebene Argument der Variablen path zu, die dann als Argument an die Funktion list übergeben wird. Das * gibt die Aktion an, die ausgeführt werden soll, wenn eine Option übergeben wird, die nicht -h oder -p ist.

#!/bin/bash

function usage {
       printf "Usage:\n"
       printf " -h                               Display this help message.\n"
       printf " -p <folder path>                 List contents of specified folder.\n"
       exit 0
}

function list {
       ls -l $1
}

while getopts :p:h opt; do
    case ${opt} in
      h)
         usage
        ;;
      p) path=${OPTARG}
         list $path
         #echo $folder
       ;;
      *)
          printf "Invalid Option: $1.\n"
          usage
       ;;
     esac
done

Führen Sie das Skript mit der Option -h aus:

 ./getopts.sh -h
Usage:
 -h                               Display this help message.
 -p <folder path>                 List contents of specified folder.

Führen Sie das Skript mit der Option -p aus:

./getopts.sh -p /home/fumba/example
total 0
-rw-r--r-- 1 fumba fumba    0 Nov  1 21:43 file1.txt
-rw-r--r-- 1 fumba fumba    0 Nov  1 21:43 file2.txt
drwxr-xr-x 1 fumba fumba 4096 Nov  1 21:43 pictures

Führen Sie das Skript mit einer ungültigen Option -k aus:

./getopts.sh -k
Invalid Option: -k.
Usage:
 -h                               Display this help message.
 -p <folder path>                 List contents of specified folder.
Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Verwandter Artikel - Bash Script