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: