ページ

2014/07/06

[ShellScript]adb-screencap で Android 端末の画面をキャプチャしてPCに持ってくるコマンド

adbでスクリーンショットを撮るやつ - teshi04 / adb-screencap.sh
↑を実行するのに ./adb-screencap.sh とかするよりパスの通っているところに置いて
コマンドっぽく adb-screencap ってしたかったので書き換えてみた。
ついでに複数端末接続時に端末を指定してキャプチャできるようにしてみた。

man の書き方とか contribution の書き方とかライセンスとかどうすればいいのかわからないので
誰か良い感じにして下さい。
全然エラー制御していなくて、端末が認識されていないのに実行したり、
複数端末が認識されているのに端末を指定せずに実行した時はコマンドの分だけエラーが出ます。

入門UNIXシェルプログラミングを途中まで読んでいたので
制御文の書き方レベルしか知らなくて
初めてのシェルプログラミングだったので空文字チェックで地味に詰まりました。

if [ -z $SERIAL ] だと $SERIAL が null の場合
if [ -z ] と評価されて unary operator expected というエラーが出ます。
if [ -z "$SERIAL" ] のようにクォートで囲って
if [ -z "" ] と評価されるようにすれば
-z (Zero length) の引数にちゃんと空文字が渡されてエラーになりません。

あ、あとコメントの TODO にある通り、オプション引数の有無でコマンドを分けていて微妙なので
誰か良い方法を知っていたら教えて下さい。よろしくお願いします。
GitHub→ wada811/ADB-Tools

参考
シェルスクリプトを公開するとき, コマンド前にバックスラッシュをつけるべき - Life is very short
Bash - 今更ながら抑えておきたいシェルスクリプト用チートシート - Qiita
シェルスクリプトの条件評価ではまりやすいところ - ritchiekotzen's blog
シェルスクリプトで空文字列かどうか調べる。 - masa.edw the ハバネロブリーダー