Syntaxfehler in der Nähe unerwartetes token `(' im shell-Skript
Dies ist mein Skript.
#!/bin/bash
MONITOR=$(free -m| grep Mem)
MEM_TOTAL=$(echo $MONITOR | awk '{ print $2 }')
MEM_USED=$(echo $MONITOR | awk '{ print $3 }')
MEM_FREE=$(echo $MONITOR | awk '{ print $4 }')
MEM_CACHE=$(echo $MONITOR | awk '{ print $5 }')
MEM_BUFFER=$(echo $MONITOR | awk '{ print $6 }')
declare -i MEM_UTIL=($MEM_TOTAL-($MEM_FREE+$MEM_BUFFER+$MEM_CACHE))
echo "$MEM_UTIL"
Bekam ich Fehler in der syntax wie
./memory_shell.sh: line 15: syntax error near unexpected token `('
./memory_shell.sh: line 15: `declare -i MEM_UTIL=($MEM_TOTAL-($MEM_FREE+$MEM_BUFFER+$MEM_CACHE))'
Wie ich es beheben kann. Ich habe 0 Kenntnisse in shell-scripting
- shellcheck.net ist dein Freund
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur zum aufzeichnen mein Problem mit genau dieser Fehlermeldung.
Stellt sich heraus, meine Skripte DOS-text-Dateien, die nicht Unix-text-Dateien (als ein Ergebnis der Wiederherstellung).
DOS2Unix Problembehebungsskripts und Sie lief gut mit aus diesem Fehler.
Ihre Laufleistung kann variieren ....
Müssen Sie nur setzen Sie Anführungszeichen um das argument zu
declare -i
wie es dauert ein argument.Wie Sie mithilfe von awk wie auch immer, Sie können auch vollständig. Im folgenden tritt der gleiche Vorgang in awk:
Awk kann mit der Zeile für Sie, wie Sie mit grep und Operationen auf die Felder in dem Datensatz. Anstatt also die Verzweigung eine Reihe von Teilprozessen, Sie können die Gabel zu einer Verarbeitung der Ausgabe der free-Befehl.
MEM_BUFFER=$(echo $MONITOR | awk '{ print $6 }')
wird immer als buffer/cache. Ich habe keine Idee zu bekommen getrennt. Eigentlich ist dieses script immerMEM_CACHE=$(echo $MONITOR | awk '{ print $5 }')
shared memoryread
Funktion oder weiterhin mit dem vorhandenen Skript, aber verwenden Sie Anführungszeichen, um der Gruppe den Ausdruck in ein einzelnes argument. Sie haben offenbar nur geschrieben einen Bruchteil der Skript, so dass nur Sie wissen, welche Teile Sie benötigen.