syntax error in expression

F

flugopa

Code:
File: "/etc/cron.hourly/platz1.sh"

Inhalt:

#!/bin/bash
FREI=`df / | grep -v Verf | awk '{print $3}'`
PLATZ=$(( FREI / 1024 / 1000 ))
echo "Platzreserve: $PLATZ"
Bei manueller Aüsführung sehe ich kein Problem, aber die autom. Ausführung
sagt mir:

Code:
/etc/cron.hourly/platz1.sh: line 3: Used
535518676: syntax error in expression (error token is "535518676")
Platzreserve:

Wie sollte der Syntax sein?
:hilfe2:
 
was soll den überhaupt ausgegeben werden, wieviel GB noch frei sind?
dann für das aus:
Code:
df -h / | tail -n 1 | awk '{print $3}'

wenn du mit der bash rechnen willst, dann ist 'expr' oder 'let' dein Freund

in dein Script muss:
Code:
declare -i FREI
dann kannst du deine Varaible FREI besetzen.
und dann kannst du rechnen:
Code:
let ergebniss=$FREI/1024/1000
echo $ergebniss
 
Zuletzt bearbeitet:
Denke,das Hauptproblem ist zunächst mal, dass dein "cron" nicht Deutsch spricht ("Used" statt "Benutzt"); damit ist der "grep -v" ... auch zweckfrei bis unwirksam, und mit diesem "Used" landet ein nicht-numerischer Wert in der Rechnung ...

Ein paar Ideen:

1. Verwende "df -P", dann bekommst du den freien Speicher immer in Spalte 4, unabhängig davon, wie lange der Device-Name in der ersten Spalte ist (Annahme: GNU df)

2. Wenn du schon mit awk die Spalte rausziehst, nimm den doch auch gleich, um die relevante Zeile rauszufiltern, und lass ihn die Berechnung machen:

Code:
df -P | awk '$6 == "/" { print "Reserve: ", $4/1000/1024 }'

Gruss
 
Vielen Dank für die Unterstützung.
Ja, es ging um die Abfrage der Restkapazität der Partition.

Darf ich noch eine Frage stellen?

Stellt euch vor ihr bekommt eine TXT-Datei die mit Windows erzeugt wurde.
Nun würde ich gern die Zeilenumbrüche auf Linux ändern.
Also von Hex 0D 0A nach 0A ohne 0D.
Ich weiss, daß es das Tool dos2unix gibt welche die Lösung vereinfacht.

Mein Interesse: suche nach HEX-Eintrag und ändere(lösche) diesen.

Code:
Suche nach HEX-Wert
HEX=0D

#Zeichenweise einlesen
while i in 
do

    #Zur Kontrolle Stelle HEX Zeichen lesbar dar.
    echo $i
    sleep 1

     # Wenn gesuchter HEX-Wert nicht enthalten ist ...-> schreibe das zur neuen Datei
     [ "$i" = "$HEX" ] || echo "$i" >> neue_datei_ohne_0D.txt

done<windows-text.txt

Welche Lösungsweg wäre Sinnvoll?
 
Code:
tr -d "\r" < windows-text.txt

oder

Code:
sed s/^M// < windows-text.txt

^M mit Strg-V, dann Strg-Enter eingeben.

Gruß Aqualung
 

Ähnliche Themen

Shellskript - Fehler in Cron

X not starting anymore since filesystem was full

Windows clients können nicht mehr auf lange laufendes System zugreifen

Rollei Mini Wifi Camcorder

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

Zurück
Oben