シェルスクリプトを実行しているCalabash-sandboxにアクセスしようとしています。基本的に私のシェルスクリプトは、基本的にcalabash-sandboxとそれぞれのコマンドを実行する必要がありますシェルスクリプトでCalabash-sandboxを有効にする
#!/bin/sh
calabash-sandbox
calabash-android ---
を持っています。それは、かっこ - 砂場を実行し、そこで停止します。
シェルスクリプトを実行しているCalabash-sandboxにアクセスしようとしています。基本的に私のシェルスクリプトは、基本的にcalabash-sandboxとそれぞれのコマンドを実行する必要がありますシェルスクリプトでCalabash-sandboxを有効にする
#!/bin/sh
calabash-sandbox
calabash-android ---
を持っています。それは、かっこ - 砂場を実行し、そこで停止します。
私はcalabash-sandbox
が実行されているスクリプトを見て、それは新しいbashセッションを作成するように見えます。新しい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.
これは、これを行うための最も簡単な方法ではありませんが、確かに有効です。