GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Überprüfen Sie, ob einer der Parameter eines Bash-Skripts mit einer Zeichenfolge übereinstimmt

Es sieht so aus, als würden Sie Optionen in einem Shell-Skript behandeln. Hier ist die Redewendung dafür:

#! /bin/sh -

# idiomatic parameter and option handling in sh
while test $# -gt 0
do
    case "$1" in
        --opt1) echo "option 1"
            ;;
        --opt2) echo "option 2"
            ;;
        --*) echo "bad option $1"
            ;;
        *) echo "argument $1"
            ;;
    esac
    shift
done

exit 0

(Es gibt einige Konventionen für das Einrücken von ;; , und einige Shells erlauben es Ihnen, die Optionen als (--opt1) anzugeben , um beim Anpassen von Klammern zu helfen, aber das ist die Grundidee)


Das hat bei mir funktioniert. Es tut genau das, was Sie gefragt haben und nicht mehr (keine Optionsverarbeitung). Ob das gut oder schlecht ist, ist eine Übung für das Plakat :)

if [[ "$*" == *YOURSTRING* ]]
then
    echo "YES"
else
    echo "NO"
fi

Dies nutzt die besondere Handhabung von $* und bash super-test [[]] Klammern.


Wie wäre es mit dem Durchsuchen (mit Wildcards) des gesamten Parameterraums:

if [[ [email protected] == *'-disableVenusBld'* ]]
then

Bearbeiten:Ok, ok, das war also keine beliebte Antwort. Wie wäre es mit diesem, es ist perfekt!:

if [[ "${@#-disableVenusBld}" = "[email protected]" ]]
then
    echo "Did not find disableVenusBld"
else
    echo "Found disableVenusBld"
fi

Edit2:Ok, ok, vielleicht ist das nicht perfekt ... Denke, es funktioniert nur, wenn -param am Anfang der Liste steht und auch mit -paramXZY oder -paramABC übereinstimmt. Ich denke immer noch, dass das ursprüngliche Problem sehr gut mit Bash-String-Manipulation gelöst werden kann, aber ich habe es hier nicht ganz geknackt ... -Kannst du??


Linux
  1. Wie übergebe ich Parameter an ein Bash-Skript?

  2. Überprüfen Sie, ob eine Variable in einer Liste in Bash vorhanden ist

  3. Jede Möglichkeit, das Bash-Skript zu beenden, aber das Terminal nicht zu verlassen

  4. Variablenbereich für Bash-Shell-Skripte und Funktionen im Skript

  5. Wie kann ich die letzte Zahl von String in Bash bekommen?

So prüfen Sie, ob eine Zeichenfolge in Bash eine Teilzeichenfolge enthält

Bash Echo Die Befehlszeile wird in der Befehlszeile selbst ausgeführt (nicht in einem Skript)?

Wie werden Parameter eingestellt, wenn Bash-Skript an Bash übergeben wird?

So teilen Sie eine Zeichenfolge in Bash-Skript auf

Wie überprüfe ich die Syntax eines Bash-Skripts, ohne es auszuführen?

Wie kann ich die wörtlichen Zeichen einer Bash-Befehlszeichenfolge überprüfen?