Shell-Script und Permission denied

misterbecks

Aktives Mitglied
Thread Starter
Dabei seit
06.11.2004
Beiträge
2.336
Reaktionspunkte
24
Ich versuche ein Bash-Script ablaufen zu lassen, erhalte aber nur „Permission denied”. Leider sind meine rudimentären Bash-Kenntnisse weg und jetzt komme ich nicht weiter..... Was kann das Problem sein?

Das Script an sich sieht so aus:

Code:
#!/bin/bash

R auswertung.R

for v in 005a 006a 
do
  cd ../$v
  pdflatex $v
  mv $v.pdf ../Fertig
  cd -
done
 
hast du es auch mit chmod ausführbar gemacht?
ansonsten musst du es halt mit bash scriptname aufrufen...
 
oneOeight schrieb:
hast du es auch mit chmod ausführbar gemacht?
ansonsten musst du es halt mit bash scriptname aufrufen...

chmod a+x oder? jetzt geht es.....
 
...noch nicht richtig.

Mit dem Befehl
Code:
R auswertung.R
soll eigentlich das Programm R geöffnet und die (txt-)Datei auswertung.R übergeben werden. Dies liefert aber die Fehlermeldung
Code:
Argument 'auswertung.R' __ignoriert__
. Ist der Code falsch?

Vielleicht noch der Hinweis, dass ich dem Programm R, Files mit source() übergebe.... d.h. eigentlich müsste ich
Code:
R source(auswertung.R)
schreiben, das wird aber nicht akzeptiert.
 
Zuletzt bearbeitet:
nimmt denn R auch per aufruf argumente an? ;)
 
oneOeight schrieb:
nimmt denn R auch per aufruf argumente an? ;)
Ich glaube nicht, gute Idee. Ich starte das Programm mit R und danach wird eine Eingabe verlangt, d.h. diese müsste eigentlich in der nächsten Zeile folgen, oder? Dann fehlt mir allerdings der Befehl, der die Zeile
Code:
source(auswertung.R)
an R übergibt.
 
wie wäre es einfach mit redirecten?
R < auswertung.R
 
oneOeight schrieb:
wie wäre es einfach mit redirecten?
R < auswertung.R

Nein, funktioniert nicht..... (wenn ich es richtig eingesetzt habe)
Code:
#!/bin/bash

R 
R < source(auswertung.R)
for v in 005a 006a 
do
  cd $v
  pdflatex $v.tex
  mv $v.pdf ../Fertig
  cd -
done

Code:
./auswertung.sh: line 4: syntax error near unexpected token `('
./auswertung.sh: line 4: `R < source(auswertung.R)'
 
warum rufst du R auf und dann noch mal?
lass mal das source () weg
man ruft source eh nicht mit () auf, ist ein shell kommando...

wie ich schon schrieb:
R < auswertung.R
muss die zeile lauten...
 
oneOeight schrieb:
warum rufst du R auf und dann noch mal?
lass mal das source () weg
man ruft source eh nicht mit () auf, ist ein shell kommando...
source() ist ein Befehl für R, der ein R-Skript (z.B. auswertung.R) ausführt. D.h. ich muss zuerst R öffnen und dann in R source(auswertung.R) ausführen.

wie ich schon schrieb:
R < auswertung.R
muss die zeile lauten...
Ok, aber damit erhalte ich diese Meldung:
Code:
Fatal error: Sie müssen '--save', '--no-save' oder '--vanilla' angeben
 
source ist auch ein befehl in der bash ;)
dann müsste es eher
echo "source(auswertung.R)" | R
heissen...
kann sein, dass du noch ein \n hinter das ) setzen musst, um ein return zu erzwingen...
 
oneOeight schrieb:
source ist auch ein befehl in der bash ;)
dann müsste es eher
echo "source(auswertung.R)" | R
heissen...
kann sein, dass du noch ein \n hinter das ) setzen musst, um ein return zu erzwingen...
Nein....alle Varianten laufen nicht.....

Eingabe:
Code:
#!/bin/bash

echo "source(auswertung.R)" | R
oder
Code:
#!/bin/bash

echo "source(auswertung.R)\n" | R
Ausgabe:
Code:
./auswertung.sh: line 3:  R: command not found
 
wo liegt denn R?
in shell scripts ruft man kommandos, die nicht im standard pfad liegen auch mit vollem pfad auf...
 
R liegt in den Applications. Ich kann die beiden Kommandos auch vertauschen, dann findet er echo nicht....
 
ja und?
kannst jetzt nicht /Applications/R statt R hinschreiben?
oder wie immer auch der volle pfad zu R heisst...

kannst ja mal R auf das terminal fenster ziehen um den zu kriegen...
 
oneOeight schrieb:
ja und?
kannst jetzt nicht /Applications/R statt R hinschreiben?
oder wie immer auch der volle pfad zu R heisst...

kannst ja mal R auf das terminal fenster ziehen um den zu kriegen...

klar kann ich das....die pfade lautet:

/Applications/R.app/
/Applications/R.app/Contents/MacOS/R

Wenn ich die zweite Zeile in das Script einfüge, wird an der entsprechenden Stelle R gestartet (in einem eigenen Fenster, sonst direkt in der Shell) und das Script hält an, ohne den Befehl echo... zu bearbeiten.
 
wenn R eine app ist, warum arbeitest du dann nicht mit einem applescript?
 
Weil das Script auch ohne größere Umwege auf einem PC laufen sollten...
 
das wird dann schwierig, weil du ein app package nicht per unix script parameter übergeben kannst...
da wirst du wohl ein script machen müssen mit einem if und osascript für den os x teil...
 
Zurück
Oben Unten