hit」のように(grepが成功したらhitと表示。使う)真偽にあわせて連続実行するときにも条件接続が利用できます。die;」(=ファイルを開くか死か。3つに分岐させています。ifになったり、ややこしいですよね)ちなみに、このサンプルスクリプトについて、ローカルのPC内ではなくリモートの端末に対して実行するならば、sleep間隔をミリ秒まで縮めると大量のトラフィックが発生する恐れがあるので、そこは適度に調整して下さい。elifへ分岐しています。]」と変数が一個消滅して文法エラーになります。変数が空だった場合のエラーを回避するための記述例になります。1;usleepが無い場合は、sleepの有無を調べます。コマンド`"」とダブルクウォートで囲むことで、コマンドが無かった場合にnullではなく、長さ0の文字列に変えています。fi」という「やりたい意図と違った結果」をお試しください。「長さ0では無い」ときに真)変数がnullだったり、空文字だったり、スペースが有ったり無かったり、ダブルクウォートで囲ったり囲まなかったり、それぞれ挙動が変わってややこしいですよね。慣れ、でしょうか?たとえば複数人でシェルプログラミングしないといけない時はコーディング規約を作って、安全なルールに縛っていると思います。ミリ秒指定しています。物足りない方はこの方法も分岐に加えてみて下さい。fisleepできないならexitしましょうという分岐です。echoであえてエラー出力(>&2)にリダイレクトしています。趣味ではなくお仕事で作るスクリプトは、標準出力とエラー出力は意識して使い分けたほうが無難です。標準出力(STDOUT)とエラー出力(STDERR)の違いで、想定外の動作になる場合があります。(たとえば大量の出力が発生した場合に標準出力は破棄されたり、バッファが貯まるまで出力を待ったりします)exitは正常終了なら0、エラーなら適当な数を指定すると良いかと。シェル関数でふれます。fi}ゲーム内で主人公(+)の座標を3つ上にずらす処理です。コマンドが利用できます。「*」は「\*」のようにエスケープするのをお忘れなく。その出力結果をバッククォート(`)で変数に入れています。if文ではPOSITION_Yが画面外にはみ出さないように座標の下限を設定しています。&」で子プロセスとしてループし続ける処理です。シェル変数でふれます。doneで条件が真であるかぎり処理を繰り返します。:;」は無限ループです。sh)で確認できます。とセットで使ったりします。ETC、名前はてきとうです)シェル変数IFSで指定した区切り文字(デフォルトだとスペース、タブ、改行)を元に、1つめ、2つめ、残りの全て(=ETC)をそれぞれの引数へ格納できます。my_readシェル関数でもふれます。説明になりますが、case文以外はこのゲームの仕様の話なので読み飛ばして下さい。fi主人公(+)の位置をループの度に1つ下げます。(Enterキーで3つ上にジャンプして、ループ中に1つずつ下に落ちる)移動範囲は1〜6に限定しています。fi石ころを初期化します。ランダムに(雑に)決めています。esaccase文です。他のプログラミング言語(Cとか)だとswitch文のイメージでしょうか。指定したものを比較します。「*」はワイルドカードとして使えます。セミコロンを2つ打っている(;;)のはタイプミスではありませんよこのサンプルスクリプトでは石を放物線っぽく投げるために、縦の位置調整ADJUSTを作ります。...のように入れています。fi石の座標を確定します。石ころが画面外に出たら経過時間STONE_ALIVEを初期化します。my_sleep前述の各シェル関数のメモを参照。背景画面を描画、石ころと主人公を描画して、スリープして、ループを繰り返します。ready?HERE_DOCUMENTヒアドキュメントです。つづく文字列を終わりの目印として(ここではHERE_DOCUMENT)その行までのすべての文字列を入力値としてコマンド(ここではcat)に渡します。終わりの目印は、左にスペースは不可なので、エディタ等で開始位置を自動インデントしている場合はご注意を。並べるよりも楽ですね。シェル関数でなんでヒアドキュメント使わなかったんだろう?って話です...まぁ、いいか。中で1つずつ実行していきます。done」(-1は数字のイチ、エルではないです。使って、プロセスIDを拾っています。番号」でバックグラウンド起動できます。%%」のように、いま止めたプロセスをバッググラウンド起動したりしてます。為の処理、ここから下の記述はユーザからのキーボード入力を受け付けるメイン処理になります。fiユーザからの入力を受け付けて、そのタイミングで各変数を更新します。キーボードからの文字列と改行(Enter)の入力をここで待ちます...が、今回は拾った文字列(INPUT_ENTER)は使っていません。Enterキーを押して遊ぶスクリプトです。入出力の設定を色々変える場合は手がかりの1つとしてsttyコマンドがあります。