Heinrich_Schwietering schrieb:
1
2
3
4
5
6
7
8
9
10
11
12
13 | #! /bin/bash
echo `exec anbox-tool status` > state.txt
MODUS=`cat state.txt | cut -d " " -f 6`
##echo $MODUS > modus.txt
if [ "$MODUS" == "YES" ]; then
`exec anbox-tool disable`
## echo "abgeschaltet" > AUS.txt
else
`exec anbox-tool enable`
## echo "angeschaltet" > AN.txt
fi
rm state.txt
exit
|
Wozu ist in Zeile 2 "echo exec ...
" gut, wieso nicht einfach:
| anbox-tool status > state.txt
|
Du liest hier sicher selten mit, sonst hättest Du mitbekommen, dass wir von den veralteten Backticks generell abraten und wieso, also selbst wenn, dann "echo $(exec ...)" an allen Stellen mit Backticks, bitte, aber ich meine das ist eh rückwärts von hinten durchs Knie.
Zeile 3 liest Du ein, was Du gerade erst geschrieben hast:
| MODUS=`cat state.txt | cut -d " " -f 6`
|
Man könnte auch, was man gelesen hat, in einem Array zwischenspeichern. State.txt wird ja ohne weiter ausgewertet zu werden von Dir eh danach gelöscht:
| anboxtool=($(anbox-tool status))
atenabled=${anboxtool[5]}
|
Das Ding in Modus umzutaufen leuchtet mir nicht ein.
| if [ "$MODUS" == "YES" ]; then
`exec anbox-tool disable`
## echo "abgeschaltet" > AUS.txt
else
`exec anbox-tool enable`
## echo "angeschaltet" > AN.txt
fi
|
Ich vermute, was Du willst, ist einfach:
| if [ "$atenabled" == "YES" ]; then
anbox-tool disable
## date > AUS.txt
else
anbox-tool enable
## date > AN.txt
fi
|
Was soll das exec bewirken?
help exec
exec: exec [-cl] [-a Name] [Kommando [Argumente ...]] [Umleitung ...]
Ersetzt die Shell durch das angegebene Kommando.
Führt das angegebene Kommando einschließlich dessen Optionen an
Stelle der Shell aus. Wenn kein Kommando angegeben ist, wirken
alle Weiterleitungen für die aktuelle Shell.
Optionen:
-a Name Setzt den Namen als nulltes Argument für das Kommando.
-c Führt das Kommando in einer leeren Umgebung aus.
-l Setzt einen Strich in das nullte Argument für das Kommando.
Wenn das Kommando nicht ausgeführt werden kann, wird eine nicht
interaktive Shell beendet, außer die Shell-Option »execfail« ist
gesetzt.
Rückgabewert:
Gibt »Erfolg« zurück, außer das Kommando wurde nicht gefunden oder
ein Weiterleitungsfehler trat auf.
Wieso schnappst Du Dir mit Backticks die Ausgabe des Programms? Du machst nichts damit.
Außer zu versuchen sie auszuführen - daher kommt die Fehlermeldung.
Du denkst zu kompliziert.
Neues Script:
| #!/bin/bash
anboxtool=($(anbox-tool status))
atenabled=${anboxtool[5]}
if [ "$MODUS" == "YES" ]; then
anbox-tool disable
else
anbox-tool enable
fi
|