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

3 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


Woher ich das weiß:Eigene Erfahrung – Intensive Beschäftigung hiermit seit etlichen Jahren

bei Perl würde es heissen: if ($i =~ /^abc/) :)

Danke. Mit Perl muss ich für diese Klausur auch arbeiten können. Dann stehe ich mit Sicherheit bei irgendeiner Übung auch mal vor diesem Problem.

0

Integer in String umwandeln, wie?

Hallo zusammen!!!

Ich habe bi gerade dabei, die Uhrzeit, welche durch einen String übergeben wird in Worten auszugeben (auch in einem String). Dabei habe ich bis jetzt folgenden code geschrieben:

import java.util.Scanner;

public class SwissTime {

    }

    public static String toSwissGerman(String time) {
    String s1= time;    
    String substr1 = s1.substring(0,2); // hour
    String substr2 = s1.substring(3,4); // minute
    int hh = Integer.parseInt(substr1);
    int mm = Integer.parseInt(substr2);
            
    if (24 == hh && mm == 00) {
    System.out.println("12i znacht");	
       		
   
    String minutenAngabeAlsUhrzeit (int mm) {
    if (0 == mm) {
    	return "";
    }
    if (mm <= 29) {
    	return mm + "ab";
    }
    if (30 == mm) {
    	return "halbi";
    }
    if (mm > 30)
    	return "
    }

Dabei wollte ich den String, welcher mir übergeben wird in 2 einzelne Strings aufteilen (hh:mm). Das habe ich mit:

String substr1 = s1.substring(0,2); // hour

String substr2 = s1.substring(3,4); // minute

gelöst. Nun wollt ich jedoch für die Minuten einen neuen String erstellen, welcher mir die Werte aus substr2 verwendet (sprich die Minuten) und diese dann je nach Wert als neuen Wert (Text) zurück gibt. Nur bei mir kommt eine Fehlermeldung auf, sprich er erkennt mir den Int mm nicht im String minutenAngabeAlsUhrzeit...

Habe ich da die Klammern irgendwo falsch gesetzt oder geht das so gar nicht?

Falls nein wäre ich froh, wenn ihr mir eine andere Möglichkeit vorschlagen könntet!!!

Vielen Dank im Voraus!!!

Grüsse und noch einen schönen Abend!!!

...zur Frage

Strings in Integer umwandeln, Java?

Hallo liebe Community,

in meinem Java Programm gibt der Benutzer zwei Zahlen ein. Einen Dividend und einen Divisor. Mein Problem ist dass die beiden eingegebenen Zahlen als String gespeichert werden. Aber ich möchte dem Benutzer dann den Quotienten, also das Ergebnis der Division, herausgeben. Aber ich weiß nicht wie ich zwei Strings dividieren kann und den Quotienten dann in einem Integer speichern kann.

Hier seht ihr nochmal meinen Code:

import javax.swing.JOptionPane;

public class MainClass_Division { public static void main(String args[]){

String eingabe = JOptionPane.showInputDialog(null, "Bitte geben Sie ein mit welche der vier Grundrechenarten Sie rechnen möchten: "); //Hier werde ich später die Funktion JOptionPane.showOptionDialog benutzen.

if(eingabe.equals("Division")){ dividieren(); } else{ JOptionPane.showMessageDialog(null, "Die Eingabe war falsch"); } }

private static void dividieren(){

String dividend = JOptionPane.showInputDialog(null, "Bitte geben Sie einen Dividend ein: ");

String divisor = JOptionPane.showInputDialog(null, "Bitte geben Sie einen Divisor ein: ");

int quotient = dividend / divisor; //hier liegt mein Problem ich kann den String dividend nicht durch den String divisor teilen. Gibt es vielleicht eine Möglichkeit die Strings dividend und divisor in Integer umzuwandeln?

JOptionPane.showMessageDialog(null, "Ihr Ergebnis lautet: " + quotient);

Ich würde mich sehr freuen wenn mir jemand helfen könnte (:

...zur Frage

Was möchtest Du wissen?