アカウント名:
パスワード:
てっきり最初にスクリプト全部読み込んでから走らせてると思ってた。
京大での事故で広く知られたように、シェルは最初にスクリプト全体を読み込むのではなく、「1行ずつ順次読み込む。そしてスクリプト終端に達したり exit や致命的エラーなどによりスクリプトは終了する。
走らせているスクリプトを変更する機会は今までになかった。期待どおりに動いていないのがわかったらkillしてから書き換えてるし。それでも、本番で長時間走らせている時に不具合見つかったらやっちゃうのかな。
スクリプトを改変するときはバックアップ後に別名コピーしてテストして問題がなければ元の名前に上書きしてた。小手先処理の簡単なスクリプトしか作らないので、バージョン管理とかその手のことはやってない現場仕事ですが。ループがあっても小さいものだし、それくらいなら最初に全部読み込まれそう。
Windowsのbatファイルも同じ感じだよね。↓みたいなの書いてpause中にファイル編集してみるとわかる。
echo 1pauseecho 2pauseecho 3pauseecho 4
echo 1pauseecho 2pause
となっているとき、1回目の pause 時に1行目を「echo ABCDEFGHIJKLMNOPQRSTUVWXYZ」に書き換えたら、「'KLMNOPQRSTUVWXYZ' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」ってエラーメッセージを出した。なるほど、「pause(CR)(LF)」の次の位置を憶えていてそこから再開しようとするのか。
覚え違えかもだけど、すごい昔の日本語DOSか、MS-DOSか、PC-DOSかCP/Mだかはメモリに読み込んでた記憶があるような。BATが入ったフロッピーディスクを途中で入れ替えする事が有るからメモリにある程度バッファリングしてたのかな。
現在のBATは実行中に書き換えると、上記のようにファイルポインタ位置でずれて意図しない現象が起きるので危険です。
1driveマシンもあったので、FDD入れ替えはありましたね
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家
しらんかった (スコア:5, 参考になる)
てっきり最初にスクリプト全部読み込んでから走らせてると思ってた。
京大での事故で広く知られたように、シェルは最初にスクリプト全体を読み込むのではなく、「1行ずつ順次読み込む。そしてスクリプト終端に達したり exit や致命的エラーなどによりスクリプトは終了する。
走らせているスクリプトを変更する機会は今までになかった。
期待どおりに動いていないのがわかったらkillしてから書き換えてるし。
それでも、本番で長時間走らせている時に不具合見つかったらやっちゃうのかな。
スクリプトを改変するときはバックアップ後に別名コピーしてテストして問題がなければ元の名前に上書きしてた。
小手先処理の簡単なスクリプトしか作らないので、バージョン管理とかその手のことはやってない現場仕事ですが。
ループがあっても小さいものだし、それくらいなら最初に全部読み込まれそう。
Re: (スコア:1)
Windowsのbatファイルも同じ感じだよね。
↓みたいなの書いてpause中にファイル編集してみるとわかる。
echo 1
pause
echo 2
pause
echo 3
pause
echo 4
Re: (スコア:1)
echo 1
pause
echo 2
pause
となっているとき、1回目の pause 時に1行目を「echo ABCDEFGHIJKLMNOPQRSTUVWXYZ」に書き換えたら、
「'KLMNOPQRSTUVWXYZ' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
ってエラーメッセージを出した。
なるほど、「pause(CR)(LF)」の次の位置を憶えていてそこから再開しようとするのか。
Re: (スコア:0)
覚え違えかもだけど、すごい昔の日本語DOSか、MS-DOSか、PC-DOSかCP/Mだかはメモリに読み込んでた記憶があるような。
BATが入ったフロッピーディスクを途中で入れ替えする事が有るからメモリにある程度バッファリングしてたのかな。
現在のBATは実行中に書き換えると、上記のようにファイルポインタ位置でずれて意図しない現象が起きるので危険です。
Re:しらんかった (スコア:0)
1driveマシンもあったので、FDD入れ替えはありましたね