少しだけ書き換えて、Linuxコマンド全般を使えるようにしてみる。
※言うまでもないですが、Scratchの改造・シェルスクリプトの実行は自己責任で!※
通常は、直接Linuxコマンドを動かすためのブロックは用意されていないので、
ScratchをSmalltalkのレベルで改造する必要があり、以下を参考にして、
ブロックの追加を行った。情報を公開してくださった方々に感謝。
参考
http://itpro.nikkeibp.co.jp/article/COLUMN/20111019/371085/
http://oohito.com/nqthm/archives/2243
http://d.hatena.ne.jp/minekoa/20080314/1205484707
ブロックの追加。
('shell %s' #- #shell: '')メソッドで、保存するファイル名を変更。
(ホームディレクトリは私の環境の場合なので、そこは御自分の環境に読み替えて下さい)
shell: t1
| file |
file _ FileStream fileNamed: '/home/o10yan/Scratch/shell'.
file nextPutAll: t1.
file close.
(Delay forMilliseconds: 100) wait
シェルスクリプトの指定ファイルも変更。
読み込んだ文字列(コマンド)をそのまま"eval"で評価して実行。
#!/bin/bash
if [ ! -e /home/o10yan/Scratch/shell ]; then
touch /home/o10yan/Scratch/shell
fi
while inotifywait -e modify /home/o10yan/Scratch/shell; do
text_line=$(cat /home/o10yan/Scratch/shell)
if [ -n '$text_line' ]; then
echo '' > /home//o10yan/Scratch/shell
eval $text_line
fi
done
![]() |
| Scratchから"gpio readall"を送って見たところ |
![]() |
| SLを走らせてみた |
まとめ
やってることは非常に単純。
Scratchから文字列をファイルに保存する。
シェルスクリプトで、文字列をコマンドとして実行する。
現実的には、「遠隔センサー接続」を利用したり、scratchClient と言うソフトで
できるようなので、そちらを使った方が楽だと思います。
が、実験としては、面白かったです。



0 件のコメント :
コメントを投稿