ubuntuusers.de

shell script und falsche interpretierung whoami

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

akimb0

Anmeldungsdatum:
11. November 2012

Beiträge: 27

Wohnort: /

Hallo zusammen,

ich habe ein shellscript geschrieben (mein erstes) welches noch in den Kinderschuhen steckt und wollte testen ob vorerst die echos in Ordnung sind.

Ich frage ab mit

1
if [ $(whoami) == "root" ]

ob der Benutzer das Script als root ausführt oder nicht

1
2
3
4
5
6
7
8
if [ $(whoami) == "root" ]
then 
BLA
BLA
BLA
else  
  echo "You must be root to run this script! Exiting..."
fi

Allerdings bekomme ich egal ob ich nun mit Userrechten

1
./setup.sh 

oder mit Rootrechten

1
sudo ./setup.sh

das Script ausführe immer die Rückmeldung:

1
2
./setup.sh: 6: [: user: unexpected operator
You must be root to run this script! Exiting...
1
2
./setup.sh: 6: [: root: unexpected operator
You must be root to run this script! Exiting...

Was mache ich falsch?

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Gibts ein #!/bin/bash in der ersten Zeile oder welche Shell ist das?

Ist whoami im Pfad?

Ansonsten auch "$(whoami)" statt $(whoami)

akimb0

(Themenstarter)

Anmeldungsdatum:
11. November 2012

Beiträge: 27

Wohnort: /

1
2
3
4
5
6
7
#!/bin/sh

echo "Testscript mal! sehen was draus wird"
echo 

if [ $(whoami) == "root" ]
then

Jawohl whoami ist im Pfad. Ich check das mal mit "$(whoami)" anstelle $(whoami)

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

hm.... geht hier auf nem Kubuntu 13.04:

antiqua@kubu:~/ubuntu$ cat testscript 
#! /bin/bash

if [ $(whoami) == root ]
then 
echo BLA
echo BLA
echo BLA
else  
  echo You must be root to run this script! Exiting...
fi

antiqua@kubu:~/ubuntu$ sudo ./testscript 
BLA
BLA
BLA
antiqua@kubu:~/ubuntu$ ./testscript 
You must be root to run this script! Exiting...
antiqua@kubu:~/ubuntu$ 

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

das ist bash vs dash, kA was dash da erwartet. [[ ]] geht auch nicht. *schulterzuck*

setz #!/bin/bash in Zeile 1.

Edit: Ah, Google weiß weiter... Es muss "x" = "y" statt "x" == "y".

akimb0

(Themenstarter)

Anmeldungsdatum:
11. November 2012

Beiträge: 27

Wohnort: /

frostschutz schrieb:

Edit: Ah, Google weiß weiter... Es muss "x" = "y" statt "x" == "y".

*patsch*

Jau ☺ funzt... Danke ☺

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

frostschutz schrieb:

Ansonsten auch "$(whoami)" statt $(whoami)

Das ist Quark, wie man nun wirklich leicht rausfinden kann, bzw. Cargo-Cult-Programming.

1
2
3
4
5
6
if [ $(whoami) == "root" ]
then 
BLA
BLA
BLA
else  

Na in Zeile 6, else:

./setup.sh: 6: [: user: unexpected operator
You must be root to run this script! Exiting...

Else darf nur mit Rootrechten aufgerufen werden. Oder sollen wir mit einer Glaskugel erraten, was in dem Script wirklich steht? ☺

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

Oh, Ihr habt schon weitergemacht, ohne mich. ☺

Dann will ich nur noch auf den Shebang hinweisen, ein subtiler Geselle, der aber gelegentlich zubeißt.

Antworten |