Het MacFreak® Forum
Printbare Versie van onderwerp: Applescript variable gebruiken in bash script
http://www.macfreak.nl/forums/topic/19/464/applescript-variable-gebruiken-in-bash-script/


Geplaatst door: fvandijk om 11:19, 7-02-2010
Ik wil een ingevoerde variabele vanuit applescript gaan gebruiken in een bash script dat vanuit applescript wordt aangeroepen.

Iemand een suggestie?


set vara to ""
tell application "Finder"
display dialog "Geef variabele in;" default answer vara buttons {"OK"} default button 1
set ordernr to text returned of the result
end tell

do shell script "/bin/tcsh start.sh | tr a-z A-Z"
of
do shell script "/bin/tcsh start.sh"


Geplaatst door: hitchhiker om 15:40, 7-02-2010
Gewoon meegeven! Je kunt in Applescript met de tekst doen wat je wilt voordat je die doorgeeft.

do shell script "/bin/tcsh start.sh" & " " & vara as text

bijv.


Geplaatst door: fvandijk om 23:02, 7-02-2010
do shell script "/bin/bash /start.sh" & " " & vara as text

Dat is het toch niet als ik het script uitvoer zie ik in mijn scherm Events het volgende:

do shell script "/bin/bash /start.sh 1223" as text


en als ik in mijn shell script een echo $vara geeft dan is deze "


Geplaatst door: BOlle om 1:15, 8-02-2010
do shell script "start.sh " & ordernr

Zorg dat start.sh in je $PATH staat. Ik heb een spatie tussen start.sh en de afsluitende " gedaan. Ik weet niet of dat nodig is. Zie ook http://developer.apple.com/mac/library/technotes/tn2002/tn2065.html


Geplaatst door: fvandijk om 7:21, 8-02-2010
Dat is niet de oplossing

do shell script "/bin/sh start.shfietsbel"
Resultaat:
error "/bin/sh: start.shfietsbel: No such file or directory" number 127


Als je de variabele er achter plakt 'plakt' hij hem gewoon aan het commando.

Ik wil gewoon dat de variabele die in Applescript wordt ingevoerd verderop in het aangeroepen shell script bruikbaar is.


Geplaatst door: BOlle om 9:24, 8-02-2010

Citaat: fvandijk om 8:21, 8-02-2010


Ik wil gewoon dat de variabele die in Applescript wordt ingevoerd verderop in het aangeroepen shell script bruikbaar is.

Dat kan door in het shell script naar de applescriptvariable als "$1" te verwijzen. Daarmee pakt de shell de eerste meegegeven variable, in mijn voorbeeld is dat ordernr, in jouw laatste voorbeeld is dat fietsbel. Die fietsbel werkt niet, want er mist een spatie tussen start.sh en fietsbel.

"$2" is de tweede meegegeven variable, bijvoorbeeld start.sh variable1 variable2.

Een voorbeeld op basis van je eerste script:

Code:
set vara to ""
tell application "Finder"
display dialog "Geef variabele in;" default answer vara buttons {"OK"} default button 1
set ordernr to text returned of the result
do shell script "/bin/sh bingo " & ordernr
end tell


In het shell script bingo gebruik je dan "$1" om te verwijzen naar het ordernr:
Code:

#!/bin/bash
say the winning number is "$1"


Geplaatst door: hitchhiker om 21:41, 8-02-2010

Citaat: fvandijk om 7:21, 8-02-2010
Ik wil gewoon dat de variabele die in Applescript wordt ingevoerd verderop in het aangeroepen shell script bruikbaar is.



Citaat: fvandijk om 23:02, 7-02-2010
Dat is het toch niet als ik het script uitvoer zie ik in mijn scherm Events het volgende:

do shell script "/bin/bash /start.sh 1223" as text


Ik weet niet wat er fout gaat alsdat die "as text" blijft staan, maar hoe moeilijk is het om te bedenken dat die "as text" er dan misschien af kan/moet?

Je geeft do shell script één (1) string met een valide opdracht. Hoe je die opdracht in elkaar knutselt is jou probleem. Doe je het niet goed, dan krijg je een foutmelding. Als dat over padnamen gaat, dan ligt de fout (zo te zien) aan het shell script. Je hebt niet verteld hoe en wat precies de bedoeling is, dus dit is niet meer dan een educated guess.

Als het je zó niet lukt, maak dan eerst die string met de (beperkte) mogelijkheden die AppleScript daarvoor heeft. Geef die aan Do Shell Script:
Code:
do shell script knutselvariabele

of gebruik de methode-BOlle hierboven.


Het MacFreak® Forum
MF-Forum v6.0.0

© 2001/2010 - MacFreak® Interactive Media