2012-04-24T19:44:01+09:00

do shell script の 262,000 バイトの壁を乗り越えられなかった話

AppleScript の do shell script コマンドに与えられるデータのサイズは、262,000バイトとアップルのドキュメントにはある。

Technical Note TN2065

do shell script に262,000バイトを超えるデータサイズを与えると、error number 255 が起きる。

このデータサイズの制限は、シェルコマンドの引数に与えられるデータの制限だとすると、here documents とか here strings を使えば、この制限を回避できるんかな?と思って、試してみましたが・・・できませんでした。データを here strings/documents で与えても、error number 255 が起きます。

じゃあ、シェルスクリプトの here string/document でもそういう制限があるのですか?というと、262,000バイト以上のデータでも、エラーは起きません。do shell script を経由したときのみ、データサイズに制限があるみたい。

追記 (2012-04-25)

do shell script は sh -c と同じと考えれば、here strings/documents を使っても無駄と理解できる。きっと、do shell script にスクリプト全体が sh コマンドの -c オプションの引数になるんだろう。do shell script に標準入力として渡すデータを指定するオプションがあればいいのにと思う。