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

Re: /bin/sh: prüfen ob String1 "Wort" aus String2 enthält



On Thu, 29 Dec 2016 21:36:43 +0100
Christian Knoke <chrisk@cknoke.de> wrote:

> Michael Lange schrieb am 29. Dec um 20:02 Uhr:
> 
> >     PKGS=""
> >     for p in $PKGNAMES; do
> >         case $INSTALLED_PKGS in
> >             *$p*)
> >                 PKGS="$PKGS $p"
> >             ;;
> >         esac
> >     done
> >     PKGNAMES="$PKGS"
> 
> nene, case ... trägt nur 1 Wort, keine Liste, und *$p*, was soll dass
> sein, du willst die Paketnamen nicht erweitern.
> 
> das musst du anders angehen

Hmm, dafür tut es das aber schon recht gut, stammt übrigens von hier:
http://stackoverflow.com/questions/229551/string-contains-in-bash#229585

In einem kleinen Testskript verhält es sich auch wie erhofft:
################################
#!/bin/dash

INSTALLED_PKGS="foo bar blah baz hey\nhoh\nfee fi foe"
PKGNAMES="foo fee eggs hoh"
PKGS=""
for p in $PKGNAMES; do
    case $INSTALLED_PKGS in
        *$p*)
            PKGS="$PKGS $p"
        ;;
    esac
done
PKGNAMES="$PKGS"
echo $PKGNAMES
################################

$ ./test.sh
foo fee hoh


Ich hatte es auch testweise in mein eigentliches Skript übernommen, wo es
ebnfalls wie erwartet zu arbeiten scheint.
Ich bin mir eben nur nicht so recht im Klaren, ob das Konstrukt in
bestimmten Situationen eben doch nicht ganz den beabsichtigten Effekt
haben könnte und stattdessen etwas von mir nicht vorher gesehenes tut...

Gruss

Michael


.-.. .. ...- .   .-.. --- -. --.   .- -. -..   .--. .-. --- ... .--. . .-.

Witch!  Witch!  They'll burn ya!
		-- Hag, "Tomorrow is Yesterday", stardate unknown


Reply to: