再びShell。カレンダーの不思議 -LiveCode備忘録

LiveCodeも9.5.1になった。と思ったらある日、スクリプトから呼び出す
Shellスクリプトの返り値がおかしいことに気づいた。
カレンダーのコマンドで帰ってくるリストで、「今日」が強調表示され
るようになってしまった。これはターミナルで試してみると今日の日付
が白抜きで強調表示されている。

put "cal"&space&1&space&2020 into Calend
CalHyouji Calendar


on CalHyouji Calend
   
   
   put shell(Calend) into Cal
   set the lockScreen to true
   put 2 into pos
   
   repeat while char pos of line 3 of Cal is space
      put "." into char pos of line 3 of Cal
      put pos +3 into pos
   end repeat
   
   get return & "......."
   put Cal & it & it into Cal
   
   repeat with Coo = 0 to 7*6-1
      put Coo +11 into bNum
      put Coo mod 7 into hLoc
      put Coo div 7 into vLoc
      get line vLoc +3 of Cal
      get word hLoc +1 of it
      if it is "." then
         get empty 
      end if 
      
      set name of button bNum to it 
      
      if it is empty then
         set disabled of button bNum to true
         set the fillFore of button bNum to "#E2EBEE"--カードのバックグラウンドと同じ色に
         set the showPen of button bNum to false
      else
         set disabled of button bNum to false
         set the fillFore of button bNum to 117
         set the showPen of button bNum to true
      end if
      
      
   end repeat
   
   
end CalHyouji

1行目をボタンなどに記述してCalHyoujiコマンドへ月/年をおくり、カレンダーを
表示させる。ターミナルなどで
cal 1 2020 として、2020年1月のカレンダーを表示させるのと一緒だ。
これまで気づかなかったが、LiveCodeのスクリプトで呼び出すShellコマンドの
仕様がかわったのだろうか。Shellコマンドでは、-hのオプションをつけると
強調表示されなくなるのだが、これまではデフォルトで-hが付いていたものが
つかなくなったということかもしれないと、

put "cal"&space&"-h"&space&1&space&2020 into Calend

として見ると、強調表示されなくなった。
少し前のOSXを乗せたmacで試して見ると、10.10のYosamiteのマシンでは、
従来どおりの挙動なので、どうやらこれはOSXのバージョンによるものの
ようだ。スクリブトからOSのバージョンを取得して切り替える必要がある
と思われるが、全てのOSXを持っている訳ではないので困ったなぁ。

put "sw_vers" into Swver
put shell (Swver)into SW
get word 2 of line 2 of SW
set the itemdelimiter to "."
get item 2 of it

取り合えずこんなことをやって見た。
shell にはshellをということで、OSのバージョンを調べて、返り値の2行目の
バージョン表記から二つ目の数字を引っ張り出す。これを調べれば対象のOS
かどうかが分かる。今の所10.10.5では-hのオプションなしで良かったのだが、
気づいたのが10.13.5だったので、10.12あたりからかなぁ。

コメント

タイトルとURLをコピーしました