Re: /bin/sh: prüfen ob String1 "Wort" aus String2 enthält
Hi,
nachdem in den Thread die ganze Zeit schweigend und mit etwas
Verwunderung (sorry ;-) verfolgt habe,
drängt es mich nun doch, da mal meinen Senf dazuzugeben.
Das erste, was ich vermisse, ist eine Aussage darüber, was Du
eigentlich vor hast.
Ich habe verstanden, dass Du einen String/Liste (oder was
vergleichbares) haben möchtest, dass Du dann einem Programm/Script…
zum Fraß vorwerfen kannst, um etwas bestimmtes zu tun.
Da wäre zunächst mal interessant zu wissen, wie genau dieser String
aussehen muss.
Könnte es z.B. sein, dass die Ausgabe von
apt-show-versions --upgradeable --brief
bereits das liefert, was Du brauchst.
Evtl. muss man die Ausgabe noch durch sed schicken, dass alles, was
nicht der reine Paketname ist
eliminiert, also:
apt-show-versions --upgradeable --brief | sed "s/:.*$//g"
apt-show-versions ist IMHO kein Bestandteil der Standard-Paketauswahl,
man müsste es also ggf.
nachinstallieren. Es hat sich nach meiner Beobachtung aber für alle
möglichen Sachen im System-Management als recht nützlich erwiesen.
Falls das oben gesagte nicht zutreffend sein sollte, d.h. wirklich
shell-Operationen erforderlich sein sollten,
dann wäre es nützlich zu wissen, von welcher shell wir reden. Da gibts
mittlerweile eine ganze Menge davon, die sich z.T. auch massiv
unterscheiden. Die eigentliche Bourne-shell "/bin/sh" existiert heute
meist nur noch als Symlink auf eine wesentlich modernere shell.
Unter Debian sind nach meiner Beobachtung meist "/bin/bash" und
"/bin/dash" installiert, wobei "/bin/sh" ein Symlink auf "/bin/dash"
ist und root standardmäßig die bash "/bin/bash" benutzt.
Sofern nicht wirklich zwingende Gründe existieren, wäre es
kontraproduktiv, auf die ganzen Features, die bash bzw. dash bieten zu
verzichten. Dabei ist nach meiner Kenntnis die bash die
leistungsfähigere der beiden, speziell im Punkt der Stringverarbeitung.
Gruß, Christian
Zitat von Michael Lange <klappnase@freenet.de>:
Hallo,
ich will in einem Shellskript prüfen, welche "Worte" aus einem String1 in
einem anderen String2 enthalten sind und die nicht enthaltenen aus
String1 entfernen.
Konkret handelt es sich bei String2 um eine Liste installierter Pakete,
die mit
INSTALLED_PKGS="`apt-mark showmanual` `apt-mark showauto`"
erstellt wird, bei String1 um eine Liste der Pakete, die ein
apt-get dist-upgrade
installieren würde. Pakete die nicht bereits installiert sind, sollen
daraus entfernt werden.
Reply to: