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

Re: BASH


Am 04.11.2013 17:36, schrieb Werner Holtfreter:
> Den Systempfad wollte ich nicht fest ins Script schreiben, aber mit
> obigem ist es perfekt.
Daher sollte man den Systempfad immer nur mit dem eigenen Pfaden erweitern
(PATH=<eigener Pfad>:$PATH). Wenn man einen festen Pfad fuer eigene Scripte hat
(z. B. /data/bin) dann kann man diesen auch in der eigenen ~/.bashrc  auch
dauerhaft hinzufuegen - wobei $HOME/bin bei einigen Distris inzwischen
automatisch hinzugefuegt wird.

PATH=/data/bin:$PATH

> Noch ein Problem. Dem Script wird ein Aufrufparameter uebergeben
> 
>    #!/bin/bash -e
>    PATH=${PATH}:~/Dokumente/Lin64
>    wav2bin $1 ${1%%.*}1.bas
>    ...
> 
> vor dem Start gehe ich ins Verzeichnis, wo die zu bearbeitenden Dateien
> liegen:
> 
> werner@zuse ~/Dokumente/Computer/Sharp1403/4 $
> 
> und starte dort das Script:
> 
> ~/Dokumente/Computer/Sharp1403/PC.Programme/PocketTools/Lin64/wav2bas2wav.wh.sh *
Wenn 4 Dateien in deinem Verzeichnis liegen, dann fuehrt dein * im Endeffekt zu
"wav2bas2wav.wh.sh Datei1 Datei2 Datei3 Datei4" und das beudetet fuer dein
Script letztlich:

wav2bin Datei1 ${1%%.*}1.bas

> Ich will erreichen, dass es mehrfach, mit allen im Verzeichnis
> befindlichen Dateien aufgerufen wird. Es wird aber nur die erste Datei
> abgearbeitet. Wie gehts richtig?
Besser waere:

for dat in $@
do
wav2bin $dat...
    ...
done

Ich wuerde dir empfehlen den Verzeichnisnamen als Parameter zu uebergeben und
dann im Script selber die zu verarbeitenden Dateien auslesen. Vereinfacht etwa
so:

#!/bin/bash -e
PATH=${PATH}:~/Dokumente/Lin64
cd $1
for dat in $(ls *)
do
wav2bin $dat...
    ...
done

In allen Faellen wirst du aber auf Fehler laufen, wenn die Dateinamen
Leerzeichen enthalten.

Gruss Tom
-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/