NoPaste

getopt-parse.bash

von inne
Beschreibung:
getopt-parse.bash
Snippet erstellt:
08.11.2019 08:15:58
Snippet wird automatisch gelöscht:
08.12.2019 08:15:58

Dein Code:
  1. #!/bin/bash -e
  2.  
  3. # Die xdg-user-dirs Definitionen einlesen
  4. # See also: https://freedesktop.org/wiki/Software/xdg-user-dirs/
  5. XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
  6. source "$XDG_CONFIG_HOME/user-dirs.dirs" || true
  7. # Standardpfade für fehlende xdg-user-dirs setzen
  8. XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
  9.  
  10. saveroot="false"
  11. savehome="false"
  12.  
  13. usage () {
  14.         cat <<! >&2
  15.         -h, --help
  16.                 Diese Dokumentation anzeigen
  17.         --saveroot
  18.                 Parameterloser Wert (boolean). Schalter ist gesetzt oder nicht.
  19.         --savehome
  20.                 Parameterloser Wert (boolean). Schalter ist gesetzt oder nicht.
  21. !
  22. }
  23.  
  24. TEMP=$(getopt -o 'h' --long 'help,savehome,saveroot' -n "$0" -- "$@")
  25.  
  26. if [ $? -ne 0 ]; then
  27.         usage
  28.         echo 'Terminating...' >&2
  29.         exit 1
  30. fi
  31.  
  32. # Note the quotes around "$TEMP": they are essential!
  33. eval set -- "$TEMP"
  34. unset TEMP
  35.  
  36. while true; do
  37.         case "$1" in
  38.  
  39.                 '-h'|'--help')
  40.                         echo 'Option -h, --help'
  41.                         shift 1
  42.                         usage
  43.                         exit
  44.                 ;;
  45.  
  46.                 '--saveroot')
  47.                         echo 'Option --saveroot'
  48.                         saveroot="true"
  49.                         shift 1
  50.                         continue
  51.                 ;;
  52.  
  53.                 '--savehome')
  54.                         echo 'Option --savehome'
  55.                         saveroot="true"
  56.                         shift 1
  57.                         continue
  58.                 ;;
  59.  
  60.                 '--')
  61.                         shift
  62.                         break
  63.                 ;;
  64.  
  65.                 *)
  66.                         echo 'Internal error!' >&2
  67.                         exit 1
  68.                 ;;
  69.         esac
  70. done
  71.  
  72. echo 'Remaining arguments:'
  73. for arg; do
  74.         echo "--> '$arg'"
  75. done
  76.  
  77. echo "saveroot=$saveroot"
  78. echo "savehome=$savehome"

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. Alternativ kannst du den gesamten Eintrag auch als Datei herunterladen.