쉘 스크립트를 실행하는 Calabash-sandbox에 액세스하려고합니다. 기본적으로 내 셸 스크립트는 기본적으로 calabash-sandbox와 각 명령을 실행해야합니다쉘 스크립트에서 Calabash-sandbox 사용
#!/bin/sh
calabash-sandbox
calabash-android ---
이 있습니다. 그것은 calabash-sandbox를 실행하고 거기서 멈춘다.
쉘 스크립트를 실행하는 Calabash-sandbox에 액세스하려고합니다. 기본적으로 내 셸 스크립트는 기본적으로 calabash-sandbox와 각 명령을 실행해야합니다쉘 스크립트에서 Calabash-sandbox 사용
#!/bin/sh
calabash-sandbox
calabash-android ---
이 있습니다. 그것은 calabash-sandbox를 실행하고 거기서 멈춘다.
나는 calabash-sandbox
이 실행되는 스크립트를 살펴 봤는데, 그것은 새로운 bash 세션을 만들고, 호리병에 필요한 모든 환경 변수를 완성하는 것으로 보인다. 따라서 스크립트에서 bash && echo 'test'
을 실행 한 경우와 거의 같습니다. 해당 세션을 종료 할 때까지 echo 'test'
부분이 표시되지 않습니다.
그러나 새 셸 세션에 명령을 푸시하는 방법은 다양하며 특히이 경우에는 제대로 작동하는 것으로 보입니다. Bash Reference Manual
배시 문자열 명령의 표준 입력으로 사용 수 있도록 상기 '< < <'재지향 연산자를 포함에서.
이렇게하면 calabash-sandbox <<< 'echo test'
과 같은 작업을 수행 할 수 있으며 새 특수 호리병박 세션이 열리 며 문자열에서 명령이 실행되고 세션이 종료됩니다. 당신은 내가했던 것처럼 더 복잡한 무언가를 필요로하는 경우
$ calabash-sandbox <<< 'echo test'
This terminal is now ready to use with Calabash.
To exit, type 'exit'.
test
This terminal is back to normal.
,이 같은 새 세션에 여러 줄 문자열을 리디렉션 EOF를 사용할 수 있습니다
#!/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
당신이 예상하는 것과 동일하게 어느,
$ ./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.
이렇게하는 것이 최선의 방법 일 수도 있지만 실제로는 효과가 있습니다.