Lottando con estensione della conchiglia
Domanda
Per un po 'di contesto, sono nel processo di sviluppo di un gioco serio (~ simulazione partecipativa) con Netlogo utilizzando Hubnet. Mi piacerebbe collegare dinamicamente Netlogo con un modello esterno in modo che i giocatori siano in grado di: 1) Eseguire un programma esterno (cioè un modello) dalla loro interfaccia client Hubnet, specificando i parametri come ingressi e 2) Avere accesso ai risultati di simulazione (cioè le uscite del modello di lettura come file esterni).
Ho trovato quel post: https://groups.yahoo.com/neo/groups/netlogo -Sers / conversazioni / argomenti / 8145
Così ho scaricato / installato le estensioni della shell con Netlogo 5.0.5 (Mac OSX 10.7.5) e ha iniziato a giocare con esso.
Le cose buone, sono in grado di eseguire:
Observer> Shell: CD "Path"
Observer> Shell: PWD
Observer> Shell: Exec "LS" (e tutti i comandi che non hanno bisogno di parametri di input come shell: exc "cal ", shell: Exec "DF" ...).
Ora le cose cattive ...
1) Io sono costantemente mancato di avviare un'applicazione casuale utilizzando questi comandi: Observer> Shell: Exec "safari.app" o Observer> Shell: Exec "Safari" (-> ERRORE)
La mia directory di lavoro è corretta e safari (o altre app che sto cercando di avviare) è in realtà presente ma Netlogo restituisce il seguente errore:
Exception Exception: impossibile eseguire il programma "Safari" (nella directory "/ applicazioni"): errore= 2, nessun file o directory di questo tipo Errore durante l'osservatore che esegue Shell: Exec Chiamato da Comando Center
2) Sto anche lottando per eseguire comandi di shell assumere parametri (ad esempio, shell: Exec "Apri" "Parametro 1" "Parametro 2" ...). Non riesco a trovare la sintassi corretta in modo che Netlogo non riconosca i parametri di input che sto tentando di passare al comando.
Ho un'esperienza molto limitata in Unix e io sono un principiante relativo con Netlogo, quindi devo mancare qualcosa da qualche parte.
Se qualcuno potrebbe aiutarmi attraverso questo, sarebbe molto apprezzato!
Grazie mille!
clément
Soluzione
è OS X, è necessario utilizzare open
per aprire i file .app
.Come hai notato, devi separare gli argomenti per il programma.Quindi
(shell:exec "open" "/Applications/Safari.app")
dovrebbe fare ciò che vuoi.
Ecco un esempio di un eseguibile effettivo con più argomenti:
(shell:exec "ls" "-l" "-t")
Infine, nota che shell:exec
è un reporter.Restituisce l'output del programma come una stringa.