case: ausgabe bei eingabe

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

case: ausgabe bei eingabe

Beitrag von OldGod78 » 12.02.2017 22:12:53

Code: Alles auswählen

read $infos
	case $infos in
		*)
			echo "okay!" ;;
	esac

erhalte "okay" wenn ich was eingebe und wenn nicht , will jedoch "okay" nur wenn ich irgendwas eingebe ... habe sämtliche Möglichkeiten versucht wie auch :

Code: Alles auswählen

*""*)
aber es nicht hinbekommen , was mache ich falsch ?

Benutzeravatar
sbruder
Beiträge: 333
Registriert: 24.06.2016 13:54:36
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Franken

Re: case: ausgabe bei eingabe

Beitrag von sbruder » 12.02.2017 22:16:34

Code: Alles auswählen

if ! [ -z $infos ];then
  echo "okay"
fi
sollte gehen

Code: Alles auswählen

case $infos in
  "")
    echo "okay";;
esac
auch
EDIT: esay → esac
Zuletzt geändert von sbruder am 12.02.2017 22:22:22, insgesamt 1-mal geändert.

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: case: ausgabe bei eingabe

Beitrag von OldGod78 » 12.02.2017 22:20:14

beide gehen net , beim oberen kommt bei einer Eingabe nichts und beim unteren immer"okay"

Benutzeravatar
sbruder
Beiträge: 333
Registriert: 24.06.2016 13:54:36
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Franken

Re: case: ausgabe bei eingabe

Beitrag von sbruder » 12.02.2017 22:25:21

Letzteres geht auch bei mir nicht, das Erste funktioniert aber!

Code: Alles auswählen

#!/bin/sh
echo -n "read: "
read infos
if ! [ -z $infos ];then
  echo "okay"
fi

Benutzeravatar
Meillo
Moderator
Beiträge: 9232
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: case: ausgabe bei eingabe

Beitrag von Meillo » 12.02.2017 22:32:29

OldGod78 hat geschrieben:

Code: Alles auswählen

read $infos
	case $infos in
		*)
		
[...]
was mache ich falsch ?
1. Du expandierst `infos' bei read
2. Du quotest `$infos' nicht beim case
3. Du matchst auf * statt auf ""
4. Du machst massenhaft Threads fuer Detailfragen auf, statt dir die Grundlagen des Shellscriptings strukturiert anzueignen
Use ed once in a while!

Antworten