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

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: