[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] bash/regex-Problem



Hallo Christian!

> ich habe mich hier irgendwie festgehirnt. Und zwar moechte ich in
> einem Shellskript mittels einer eigentlich einfach sein muessenden
> if-Abfrage ueberpruefen, ob ein String den Inhalt a oder b hat.
> Das mit dem "oder" bekomme ich aber nicht auf die Reihe, und passende
> Suchbegriffe fuer Google scheinen sich mir heute auch zu entziehen.
> 
> Minimalbeispiel:
> 
> #! /bin/sh
> leiter="schmidt"
> if [ "$leiter" = "[schulze|schmidt]" ]; then
>   echo "Stimmt"
>   else
>   echo "Stimmt nicht"
> fi
> 
> Das Skript gibt immer "Stimmt nicht" aus, und ich blicke einfach nicht
> mehr warum.
> Fuer Hin- und Verweise waere ich dankbar.
Bash 3.x kann regex. 
Beispiel aus meinen Backup-Skript für unstable:
DATA_DIRS=( $(< $CONFIG_FILE) )
for DIR in ${DATA_DIRS[*]}; do
	if [[ $DIR =~ "mon|tue|wed|thu|fri|sat|sun" ]]; then
		WEEKDAY=$DIR
	elif [[ $DIR =~ "^/(.*)" ]]; then
		...
	elif [[ $DIR =~ "^mysql$" ]]; then
		...
	fi
done

das gleiche für Sarge:
DATA_DIRS=( $(< $CONFIG_FILE) )
for DIR in ${DATA_DIRS[*]}; do 
	ERR=0

	#if [[ $DIR =~ "mon|tue|wed|thu|fri|sat|sun" ]]; then
	echo $DIR | egrep -i "mon|tue|wed|thu|fri|sat|sun" > /dev/null && ERR=1
	#elif [[ $DIR =~ "^/(.*)" ]]; then
	echo $DIR | egrep "^/(.*)" > /dev/null && ERR=2
	#elif [[ $DIR =~ "^mysql$" ]]; then
	echo $DIR | egrep "^mysql$" > /dev/null && ERR=3

	if [[ $ERR = 1 ]]; then
		...
	elif [[ $ERR = 2 ]]; then
		...
	elif [[ $ERR = 3 ]]; then
		...
	fi
done

config hierfür:
/var/www/typo3
mysql

Sun
/etc 

Vielleicht hilft Dir das etwas, wenn auch spät

CU        
         
  Michael  
          
-- 
    ,''`.   Michael Ott, e-mail: michael at zolnott dot de
   : :' :   Debian SID on Thinkpad T43: 
   `. `'    http://www.zolnott.de/laptop/ibm-t43-uc34nge.html 
     `-

Attachment: pgpAzAm7vhssA.pgp
Description: PGP signature


Reply to: