Bash: Wie funktioniert ein Stringvergleich mit einem Muster in einem Skript?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Versuche es mal if [ -z "${i/abc*}" ] ; then

... ${i/abc} löscht im den String alles, was auf abc passt, wenn das am Anfang stand, ist dann der String leer.

Mit [[ kenne ich mich leider nicht aus.

Vielen Dank. Wenn ich das -z weglasse, macht es genau das, was ich brauche. :D

0

Hinweis(e):

Die eckigen Klammern [ ] stellen einen Test-Befehl zur Verfügung, der als Resultat eine 0 oder 1 liefert. Der Vergleich an sich muß auch durch Leerzeichen von dem Klammern getrennt werden.

Der Operator "=" hat eine doppelte Funktion: Zuweisung oder Vergleich:

X=Y   # Zuweisung
X = Y # Vergleich

Außerdem ist der m.W. nur für Zeichenketten (bzw. Inhalte von Variablen) definiert; will man mit einer Zahlen-Konstanten vergleichen, wird der Operator "-eq" zum Einsatz. Analog für Größenvergleich "-lt", "-gt", ...

Aber auch hierbei ist das Leerzeichen signifikant!

Weil eigenständiger »Befehl« muß danach noch ein Semikolon folgen ... zumindest, wenn man den Ausdruck auf eine Zeile schreibt.

Wie so ein Vergleich korrekt auf eine Zeile geschrieben wird, erhält man einfach durch die folgende Eingabe im Terminal:

if
[ X = Y ]
then
echo gleich
else
echo ungleich
fi

Holt man sich dies Folge mit "Taste aufwärts" wieder hervor, sieht man

if [ X = Y ]; then echo gleich; else echo ungleich; fi

Man beachte die Semikolon! Und das Ergebnis! Siehe auxh:

if [ $X = $Y ]; then echo gleich; else echo ungleich; fi

Außerdem sieht man eventuelle Fehler sofort!

Immer wieder hilfreich:

man bash

oder, falls installiert:... und entsprechende Info vorhanden:

info bash


Vor dem blablabla sollte eine Raute als Kommentarzeichen stehen.

Gibt es die Möglichkeit in ein Bash Skript einen Zufallsgenerator einzubauen, der aus festgelegten Variablen eine Zufällige ausgibt?

Und zwar sitze ich momentan an einem Skript, das mir und meinen Kollegen sagen soll, wo wir in der Mittagspause essen gehen sollen. Mein Problem ist jetzt das ich nicht weiß wie ich aus den 4 Variablen = Ikea, Döner, Chinetzen (also Asiamann) oder Bäcker eine zufällige ausgeben lassen kann. Desweiteren hab ich einen Arbeitskollegen der kein Ikea mag und einen der keinen Döner mag. Aber das lässt sich doch problemlos über if und then lösen denke ich? Ich muss zugeben das ich da noch recht neu bin, Ausbildung und so.. :) Danke

...zur Frage

VBA Makros - if Anweisung

Hi,

ich will mit makros etwas abfragen...

ich habe eine hauptabfrage und wenn diese zutrifft, nur dann, soll es noch andere abfragen geben.

also diesen aufbau

if .......... then if .....then if......then

End IF

Nach jedem If muss aber ein END-IF kommen....

weiße von euch jmd wie man das machen könnte?

Danke schon mal

...zur Frage

Von ~$ auf ~# wechseln?

Wie wechselt man bei Shell-Programmen vom ~$ Prompt auf den ~# Root Shell Prompt?

...zur Frage

Java beim "if-else" Befehl strings vergleichen?

Hey Leute hab eine Frage an alle java programmierer da draußen , warum bei meinemif-befehl bei strings keine gleichheit entsteht .

Alles wichtig zum Befehl hab ich hier aufgeführt; der rest des programmes ist egal für die aktion :

String bZed = "Zed";

String Ban1 = JOptionPane.showInputDialog(null, "Schreibe den Ersten Ban Hier Hinein: " , "Erster Ban" , JOptionPane.INFORMATION_MESSAGE);

//Champs nach erstem Ban ausschließen if (Ban1 == bZed) { System.out.println("yep"); }else{ System.out.println("Nope"); }

der Zeilenumbruch liegt wegen dem Format der Website zusammen .. im editor ist er nicht !

Wenn ich nun bei dir Aufforderung JOPtionPane.showInputDialog "Zed" Eingebe kommt im nachhinein bei cmd Nope anstatt yep was ich ursprünglich wollte

...zur Frage

Bash: Datumsvergleich

Ich habe noch eine Frage zur Bash-Skript-Programmierung. Ich habe zwei Dateien, die eine hat mein Skript ermittelt, die andere wurde übergeben. Nun habe ich von beiden Dateien das letzte Änderungsdatum in Variablen gespeichert. Diese Daten möchte ich nun vergleichen, aber mein Ansatz unten funktioniert nicht.

if [[ "$TAGUEBERGABE > $TAG" ]]

then

echo "$NAME"

fi

Oder gibt es vielleicht sogar eine einfachere Möglichkeit herausfinden, welche Datei älter oder jünger ist?

...zur Frage

Was möchtest Du wissen?