ubuntuusers.de

Unexpected Operator in IF?

Status: Ungelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

Nookie

Avatar von Nookie

Anmeldungsdatum:
16. Mai 2010

Beiträge: 104

Wohnort: Ostschweiz

Hallo zusammen.

Ich habe mir ein kleines Script erstellt welches die KVM Module aus meinem Kernel entfernt. Eigentlich funktioniert alles wunderbar, nur habe ich mit einigen Fehlermeldungen die wohl aus den IF-verzweigungen stammen zu kämpfen?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash

if [ $EUID -ne 0 ]; then
   echo "This script must be run as root!"
   exit 1
fi

if [ "$1" == "amd" ]; then
	arch="amd"

elif [ "$1" == "intel" ]; then
	arch="intel"
else

	read -p "Do you use an Intel[1] odr AMD[2] processor?" arch

	if [ $arch -eq 1 ]; then
		arch="intel"

	elif [ $arch -eq 2 ]; then
		arch="amd"
	else
		echo "Invalid input! Use [1]Intel or [2]AMD"
		exit 1
	fi
fi

killall VBoxSVC
export VBOX_HWVIRTEX_IGNORE_SVM_IN_USE=true
rmmod kvm_$arch
rmmod kvm
/etc/init.d/networking restart
/etc/init.d/virtualbox restart
VirtualBox

Das wäre das Script und die Fehlermeldungen wären:

1
2
3
4
User@ubu01:~/Dokumente/scripts/VirtualBox_KVM_FIX$ sudo ./VirtualBox_KVM_FIX.sh
./VirtualBox_KVM_FIX.sh: 4: [: -ne: unexpected operator
./VirtualBox_KVM_FIX.sh: 9: [: unexpected operator
./VirtualBox_KVM_FIX.sh: 12: [: unexpected operator

Habe ich syntax Fehler?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Ganz offensichtlich rufst Du das Skript mit leerer Variable "$EUID" auf. (1. Fehler)

Die anderen Fehler kann ich nicht nachvollziehen. Wie sieht der Befehl genau aus, mit dem Du das Skript aufrufst ?
Bist Du ganz sicher, dass das Skript und die Fehlermeldungen zusammen gehören ?
(Bei Deinem Beispiel stimmen auf jeden Fall die Zeilennummern schon mal nicht. Außerdem wäre $1 leer, weil Du keinen Parameter angehängt hast)

track

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17599

Wohnort: Berlin

1
2
3
4
if [ $EUID -ne 0 ]; then
   echo "This script must be run as root!"
   exit 1
fi

Bei doppelten Anführungszeichen wird das Ausrufezeichen von der Shell interpretiert - ein Paaar einfache Anführungszeichen müsste hier weiterhelfen.

Antworten |