ubuntuusers.de

Bash-Skript: -e, -x -foo zuweisen

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

Ichi

Avatar von Ichi

Anmeldungsdatum:
12. April 2006

Beiträge: 162

Hallo liebe Leute,

ich möchte in einem Bash-Skript "-s" abfragen und einem Befehl zuweisen. Bisher habe ich es mit "$@" versucht, aber das führte zu nichts. Tipp, Ratschlag, Das-Muss-Man-Wissen?

Vielen Dank!

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7782

"$@" ist schon richtig, fragt sich eben nur, in welchem Kontext.

Ansonsten eben das gute alte getopts.

https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_für_Anfänger/#Parameter-an-ein-Skript-uebergeben

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11248

Wohnort: München

Stichwort getopts - in der Shell sollte dir

info getopts 

dazu einiges erzählen können.

Mokkujin

Anmeldungsdatum:
2. Mai 2008

Beiträge: 389

Wohnort: Hannover

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

Ichi schrieb:

ich möchte in einem Bash-Skript "-s" abfragen und einem Befehl zuweisen.

"Einem Befehl zuweisen" ist eine unübliche Formulierung - man weist Variablen einen Wert zu. Verstehe ich Dich richtig, dass Du ein Skript hast, das erkennen soll, wenn "-s" als Kommandozeilenargument übergeben wurde, und dann einen anderen Befehl ausführen will, an den es dann wiederum "-s" übergibt?

Falls ja, dann ist das bereits erwähnte getopts genau richtig. Minimalistisches Beispiel

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/bin/sh

unset opt_s

while getopts 's' OPT; do
  case "$OPT" in
  s) opt_s=-s;;
  *) exit 1;;
  esac
done

shift $((OPTIND - 1))

# passing on
args.sh $opt_s

Bisher habe ich es mit "$@" versucht, aber das führte zu nichts. Tipp, Ratschlag, Das-Muss-Man-Wissen?

Es ist immer gut, wenn Du das Skript oder zumindest den relevanten Ausschnitt zeigst, damit man weiß, was Du versucht hast, und außerdem als Anhaltspunkt, der hilft zu verstehen, was Du erreichen möchtest.

seahawk1986 schrieb:

Stichwort getopts - in der Shell sollte dir

info getopts 

dazu einiges erzählen können.

Damit passiert:

1
2
$ info getopts
info: No menu item 'getopts' in node '(dir)Top'

help getopts sollte es sein.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11248

Wohnort: München

rklm schrieb:

Damit passiert:

1
2
$ info getopts
info: No menu item 'getopts' in node '(dir)Top'

help getopts sollte es sein.

Das info aus Arch Linux kann das... (das zeigt dann die selbe Manpage wie man 1 getopts an) - help klappt mit der Bash als Shell, aber alternative Shells (wie zsh) haben das z.B. nicht zwingend eingebaut.

Antworten |