PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bash-skript problem


maximAL
2005-12-02, 18:51:27
hmm, zählt sowas schon zu programmierung? egal...

jedenfalls muss ich zwecks studium ein kleines bash-skript als beleg schreiben. soweit, so nervtötend, jedenfalls hab ich jetzt das allseits beliebte problem, dass es bei mir zuhause läuft, aber auf dem FH-sever (über ssh) nicht.
hier mal das gute stück:
case $# in
2) qd=$1; kd=$2; zd=$1 ;;
3) qd=$1; kd=$2; zd=$3 ;;
*) echo "Quelldatei?"
read qd
echo "Kettdatei?"
read kd
echo "Zieldatei j/n"
read auswahl
if [ "$auswahl" = "j" ]
then
echo "Zieldatei?"
read zd
else
zd=$qd
fi ;;
esac

cat $qd $kd | cat >$zd

auswahl="j"
while [ "$auswahl" != "n" ]
do
echo "Weitere Dateien j/n"
read auswahl
if [ "$auswahl" != "n" ]
then
echo "Kettdatei?"
read kd
cat $zd $kd | cat>$zd
fi
done
wie hoffentlich unschwer zu erkennen, gehts um das verketten von datein.
mit zwei 2 dateien wird die 2. an die 1. angehängt, mit 3 dateien wird die 3. erstellt und die ersten beiden angehängt. ohne dateien läuft das über einen dialog. am ende kommt immer die möglichkeit, noch weitere dateien anzuhängen.

wie gesagt läuft das bei mit wunderbar, aber auf dem server getestet verschwindet der inhalt der ersten datei immer. also cat $zd $kd | cat>$zd ersetzt den inhalt von zd durch kd, anstatt was zu verketten...
kann das auf irgendner eigenheit des servers beruhen? will montag bei der abgabe nicht dumm dastehen :wink:

Aqualon
2005-12-02, 22:54:45
Warum benutzt du nicht einfach cat $qd $kd >$zd?

Aqua

maximAL
2005-12-02, 23:59:20
gute frage, nächste frage :biggrin:
werd ich gleich morgen früh mal testen :wink:

maximAL
2005-12-03, 11:25:27
hmm, auch da bekomm ich nur ne warnung, dass eingabedatei = ausgabedatei und der inhalt der ersten geht verloren...

Lokadamus
2005-12-03, 11:28:40
Warum benutzt du nicht einfach cat $qd $kd >$zd?

Aquammm...

Mach mal folgendes daraus:
cat $zd $kd >>$zd

Du brauchst 2x >, um den Kram anzuhängen, wenn du nur 1x > machst, wird die Datei jedesmal neu angelegt ... eventuell kannst du auch über eine 3. Datei gehen, dann würde es cat $1 $2 >>$3 sein und in 3 ist der Inhalt von beiden Dateien ...

maximAL
2005-12-03, 11:57:37
hmm, dann muss ich die zieldatei aber jedesmal erst löschen, falls sie existiert...
und überhaupt: wieso zur hölle funktioniert das auf meiner mandrake-schüssel einwandfrei?

maximAL
2006-01-22, 23:43:39
nunja, neues skript, neues problem.
diesmal gehts darum ein tool zu schreiben, dass durch die verzeichnisstruktur geht und in jedem verzeichnes die größe der enthaltenen dateien addiert und ausgibt.
das ganze soll rekursiv sein, mit parameter-rückgabe über echo. und da gibts wohl irgendein problem, jedenfalls vertragen sich wohl zwei werte bei der addition nicht.
dir=~/htw/bs/beleg2

cd $1

if [ $# -lt 2 ]
then
size=0
else
size=$2
fi

for obj in `ls -A`
do
if [ ! -d $obj ]
then
filesize=`ls -s $obj | awk '{print $1}'`
echo $filesize
size=$(( $size+$filesize ))
elif [ -d $obj ]
then
dirsize=`$dir/space $obj $size`
echo $dirsize
size=$(( $size+$dirsize )) #HIER DAS PROBLEM
fi
done

echo $size
die bash sagt immer: ./space: line 23: 8+4
12 : syntax error in expression (error token is "12 ")
aus unerfindlichen gründen will sich dirsize nicht addieren lassen. wenn ich ihn von hand auf einen ganzzahligen wert setze, funzt es.
also welches leerzeichen hab ich jetzt wieder zu wenig? :|