bash script

stradi

Active Member
Ave!

Brauche bisschen Unterstützung beim bash script, ist leidre nicht meine stärke.

Ich möchte z.B die installation mehrerer Pakete aus dem pkgsrc automatisieren und mein Gedanke geht etwa so in die Richtung:

cd /usr/pkgsrc/sysutils/"package" make install clean && cd /usr/pkgsrc/sysutils/"package" make install clean

ist das richtig? Könnte mir jemand jetzt aufs schnelles paar Tipps geben wie so ein script aussehen sollte?

Bedanke mich und Gruesse,
stradi
 
ich würds ähnlich machen ...

cd /usr/pkgsrc/sysutils/"package01" && make install clean &&\
cd /usr/ ......................"package02"..................... all clean &&\
.................................."package03" ...................... usw., wie viele du halt haben willst ....

lg
 
Es macht wohl Sinn zuerst jeweils in allen Verzeichnissen make config aufzurufen und in einem zweiten Schritt make install clean. Sonst kommen u.U. immer wieder Abfragen während das Skript läuft.

Noch 3 Bemerkungen
  • pkgsrc gibts nicht unter FreeBSD
  • Warum die Bash? sh genügt wohl vollkommen für diese Aufgabe
  • Wiki-Artikel zu Shell-Scripting

mousaka
 
meinst du sowas?

Code:
# cat mypkglist
sysutils/gnome-settings-daemon
sysutils/gnome-system-monitor
sysutils/gnome-system-tools
#
# for i in `cat mypkglist`
> do
> cd /usr/ports/$i 
> make install clean
> done
 
Es macht wohl Sinn zuerst jeweils in allen Verzeichnissen make config aufzurufen und in einem zweiten Schritt make install clean. Sonst kommen u.U. immer wieder Abfragen während das Skript läuft.

Noch 3 Bemerkungen
  • pkgsrc gibts nicht unter FreeBSD
  • Warum die Bash? sh genügt wohl vollkommen für diese Aufgabe
  • Wiki-Artikel zu Shell-Scripting

mousaka

Ja, dass stimmt, die Frage bezieht sich nicht direkt auf FreeBSD. Muss mich hier entschuldigen es falsch gepostet zu haben.

Es muss auch nicht unbedingt Bash sein. Es muss nur den Sinn und Zweck erfüllen.

Danke für den Tipp mit der Wiki.

Allerdings noch eine frage: make config, bezieht sich auf FreeBSD, bei NetBSD reicht make install clean clean-depends (?)

Und jetzt "mein" script:
Code:
#!/bin/sh

pkgtools/pkginstal
pkgtools/pkgfind
pkgtools/pkglint
pkgtools/pkg_chk
sysutils/xenkernel33
sysutils/xentolls33
#
>do
>cd /usr/pkgsrc/$i
>make instal clean clean-depends
>done

ist dass richtig? Ist, glaube ich, nicht die schönste Variante.

LG,
stradi
 
ist dass richtig? Ist, glaube ich, nicht die schönste Variante.

fast...

es muss eine datei erstellt werden die eben die packages enthält (in diesem beispiel heisst sie "deineliste"), die installiert werden sollten, ihr inhalt sähe dann so aus:

pkgtools/pkginstal
pkgtools/pkgfind
pkgtools/pkglint
pkgtools/pkg_chk
sysutils/xenkernel33
sysutils/xentolls33

jetzt startest die for schleife (du befindest dich dabei in dem verzeichnis, wo auch deine liste gespeichert ist):

Code:
# for i in `cat deineliste`
> do
> cd /usr/src/$i
> make install clean
> done

ob das so schön ist ist mir persönlich im moment egal, es geht doch um die funktionalität, oder?
wäre nett wenn du berichten würdest, ob es geklappt hat...
 
wäre nett wenn du berichten würdest, ob es geklappt hat...


Grundsätzlich ja.

Code:
whisky# cat ./ports
pkgtools/pkginstal
pkgtools/pkgfind
pkgtools/pkglint
pkgtools/pkg_chk
sysutils/xenkernel33
sysutils/xentolls33
editors/vim

Code:
#! /bin/sh

while read PORT
do
  cd /usr/pkgsrc/${PORT}
  make install clean clean-depends
done < ports

und funzt.

Bedanke mich noch einmal fuer Eure hilfe.
LG,
stradi
 
Zuletzt bearbeitet:
fast...

es muss eine datei erstellt werden die eben die packages enthält (in diesem beispiel heisst sie "deineliste"), die installiert werden sollten, ihr inhalt sähe dann so aus[...]
Das wäre gar nicht mal unbedingt notwendig, da die Bourne-Shell (und kompatible) jeden Whitespace als Trennzeichen verarbeiten. Man könnte also auch sowas machen:
Code:
#!/bin/sh

Liste="pkgtools/pkginstal
pkgtools/pkgfind
pkgtools/pkglint
pkgtools/pkg_chk
sysutils/xenkernel33
sysutils/xentolls33
editors/vim"

for port in $Liste; do
  cd /usr/pkgsrc/${port}
  make install clean clean-depends
done
Ist aber natürlich weniger flexibel und wiederverwendbar als die Lösung mit der Datei...
 
stradi,
danke für dein feedback.

Ogion,
interessant zu wissen, getestet, ok.

Code:
# ./codetest
cd: can't cd to /usr/pkgsrc/pkgtools/pkginstal
make: don't know how to make install. Stop
cd: can't cd to /usr/pkgsrc/pkgtools/pkgfind
make: don't know how to make install. Stop
cd: can't cd to /usr/pkgsrc/pkgtools/pkglint
make: don't know how to make install. Stop
cd: can't cd to /usr/pkgsrc/pkgtools/pkg_chk
make: don't know how to make install. Stop
cd: can't cd to /usr/pkgsrc/sysutils/xenkernel33
make: don't know how to make install. Stop
cd: can't cd to /usr/pkgsrc/sysutils/xentolls33
make: don't know how to make install. Stop
cd: can't cd to /usr/pkgsrc/editors/vim
make: don't know how to make install. Stop
#

vielleicht kann noch "jemand" diesen post zu Geekstuff/Programmierung verschieben?
 
Zurück
Oben