2016-08-08 23 views
1

Ich versuche, Calabash-Sandbox laufenden Shell-Skript zugreifen. Grundsätzlich hat mein Shell-SkriptAktivieren Calabash-Sandbox in Shell-Skript

#!/bin/sh 
calabash-sandbox 
calabash-android --- 

, die grundsätzlich Calabash-Sandbox und die entsprechenden Befehle ausführen sollte. Es führt Calabash-Sandbox aus und stoppt dort.

Antwort

1

Ich sah mir das Skript an, das calabash-sandbox ausgeführt wird, und es scheint, dass es eine neue Bash-Sitzung erstellt, komplett mit allen Umgebungsvariablen, die Calabash benötigen. Das entspricht in etwa dem, wenn Sie bash && echo 'test' in einem Skript ausgeführt haben - Sie werden den echo 'test'-Teil nicht sehen, bis Sie diese Sitzung beenden.

Aber es gibt eine Vielzahl von Möglichkeiten, Befehle in neue Shell-Sitzungen zu schieben, und eine davon scheint in diesem Fall gut zu funktionieren. Von einem Bash Reference Manual

heftigen Schlag beinhaltet den ‚< < <‘ Umleitungsoperator, so dass eine Zeichenkette als Standardeingabe in einen Befehl verwendet werden.

Dies bedeutet, dass Sie etwas tun können: calabash-sandbox <<< 'echo test' und es wird Ihre neue Sonder Kalebasse Sitzung öffnen, führen Sie Ihren Befehl in der Zeichenfolge, und die Sitzung beenden.

$ calabash-sandbox <<< 'echo test' 
This terminal is now ready to use with Calabash. 
To exit, type 'exit'. 
test 

This terminal is back to normal. 

, wenn Sie etwas komplizierter müssen wie ich, können Sie EOF verwenden, um eine mehrzeilige Zeichenfolge auf Ihre neue Sitzung zu umleiten, wie folgt aus:

#!/bin/bash 
calabash-sandbox <<EOF 
    export BUNDLE_ID=com.tabrindle.example 
    export DEVICE_TARGET=$(system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p' | grep "Serial Number:" | awk -F ": " '{print $2}') 
    export DEVICE_ENDPOINT=http://gobbledygook.local:37265 
    export CODE_SIGN_IDENTITY="iPhone Developer: Brindleware LLC (XX8799XB1X)" 
    echo "" 
    printenv | grep -E 'BUNDLE_ID|DEVICE_TARGET|CODE_SIGN_IDENTITY|DEVICE_ENDPOINT' 
EOF 

Welche, genau so, wie man erwarten würde, wird so etwas ausgeben:

$ ./execute_calabash 
This terminal is now ready to use with Calabash. 
To exit, type 'exit'. 

DEVICE_ENDPOINT=http://gobbledygook.local:37265 
BUNDLE_ID=com.tabrindle.example 
DEVICE_TARGET=34fc6d34c34e23454c234523454580b1e2345b9ef 
CODE_SIGN_IDENTITY=iPhone Developer: Brindleware LLC (XX8799XB1X) 

This terminal is back to normal. 

Dies ist möglicherweise nicht der einzige oder sogar beste Weg, dies zu tun, aber es funktioniert sicherlich.