PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : empty datei prüfen



moorole
11-10-2005, 10:42
Guten Tag,
ich habe ein Teil eines Scriptes das ein If Bedingung ausführen soll wenn die Datei empty ist.
####
##
if test -f atz*
then
set *
datei=
datei=$1; export datei
echo $1
pruef=${pruef:=`file $1`}
echo $pruef
#
if ["$1 empty"="$pruef"]
then
mv $1 ole.txt
else
mv $1 elo.txt
fi
fi
#####
leider wird die vergleichsabfrage nicht richt ausgeführt
+ datei=
+ datei=atz.txt
+ export datei
+ echo atz.txt
atz.txt
+ + file atz.txt
pruef=atz.txt: empty
+ echo atz.txt: empty
atz.txt: empty
+ [atz.txt empty=atz.txt: empty]
ole.sh[14]: [atz.txt^Iempty=atz.txt:^Iempty]: not found
+ mv atz.txt elo.txt
####
Sinn des Gesamt-Scripts ist aus einer großen Datei mehrere Teildateien zu machen ( das funktioniert auch) nur darf das nicht weiter gehen wenn die Ursprungsdatei empty ist!!
mfg ole

greywolve
11-10-2005, 12:46
ein umständlicher ... bzw uneleganter weg wäre:



echo $(ls deinedatei -l) > tempdatei
awk '{printf $7}' tempdatei


dann haste die bytes der datei!

dann die ausglesenen bytes inner if abfrage auf 0 überprüfen ... und alles weiter erklärt sich von selbst ^^

kein eleganter weg ... aber ich hoffe es hilft dir ein wenig weiter

ninguno
11-10-2005, 12:55
prüfen ob datei nicht leer:

if [ -s "file.txt" ]; then echo "Datei nicht leer"; fi;

Joghurt
11-10-2005, 14:02
if ["$1 empty"="$pruef"]Der Befehl (ein alias für test) heißt "[" ! Deshalb darfst du die Leerzeichen NICHT vergessen:


if [ "$1 empty" = "$pruef" ];

moorole
11-10-2005, 15:41
also bei mir geht mit if nicht aber dafür mit case
###
case "$pruef" in
"$1: empty")
rm $1 && rm *.ah;;
esac
###
Danke trotzdem

Joghurt
13-10-2005, 13:31
also bei mir geht mit if nicht aber dafür mit caseIst ja auch klar, die if testet auf "$1 empty", die case auf "$1: empty", also ein anderer String. Passe die if-Zeile einfach entsprechend an.