2017-09-04 4 views
1

J'ai cette fonction:Utilisez System.cmd pour exécuter AppleScript

def run(id) do 
    {_, status} = System.cmd "osascript", ["#{File.cwd!}/lib/script/test.applescript"], arg0: id 
    {:ok, status} 
end 

J'ai besoin de passer id-osascript. L'équivalent shell serait: osascript ~/lib/script/test.applescript 1 mais je ne trouve pas la bonne option dans Elixir. Tout renvoie une erreur d'argument, si je fais:

System.cmd "osascript", ["#{File.cwd!}/lib/script/test.applescript"], arg0: id 

ou

System.cmd "osascript", ["#{File.cwd!}/lib/script/test.applescript"], id 

ou

System.cmd "osascript", ["#{File.cwd!}/lib/script/test.applescript", id] 

ou

System.cmd "osascript", ["#{File.cwd!}/lib/script/test.applescript #{id}"] 

Comment puis-je passer id-System.cmd "osascript", ["#{File.cwd!}/lib/script/test.applescript"]?

Répondre

2

On dirait que ça doit être une chaîne est tout:

{_, status} = System.cmd "osascript", ["#{File.cwd!}/lib/script/test.applescript", "#{id}"] 

fonctionne très bien.