タグ

ShellScriptとcommandに関するgouei2001のブックマーク (3)

  • BASHシェルスクリプトで「キー入力待ち」プロンプトを実装する | DevelopersIO

    BASHシェルスクリプト実行中に、 例えば下記のように表示させたい場面はよくあります。 実行しますか? (y or N): ここで人間が「y(あるいはYes)」と入力しないと先に進まない、問題があればNと入力して終了したり、CTRL+Cで強制終了させたり。 そんなプロンプト機能を実装してみます。 先にネタばらしをすると、全部readコマンドがやってくれます。 例1 : 「Hit enter key!」 単に実行を一時停止して、問題がなければエンター(リターン)キーを押すことで先に進むようなシェルスクリプトは、このようになります。 #!/bin/bash : (前段階の処理) read -p "Hit enter: " (続きの処理) : 単に「Hit enter: 」と表示して処理が一時停止します。エンター(リターン)キーを押せば先に進みます。 もし前段階の処理で何かしら問題が見つかれば、

    BASHシェルスクリプトで「キー入力待ち」プロンプトを実装する | DevelopersIO
  • 変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス

    → 他のプログラミング言語と同様に = を使用する。 シェルスクリプトでも C言語などと同様に = を使用することで変数に値を設定することができる。ただし、C言語とは違い = の前後にスペースがあってはいけない。 また、変数名の大文字と小文字は区別されるため変数 VAR と変数 var は別物として扱われる。さらにシェル変数に「型」は存在しないので、文字列や数値を区別なく設定できる。 ポイントをまとめると以下のとおりとなる。 = を使う 値の設定時は変数名の先頭に $ を付けない ($ は参照時のみ) = の前後にスペースを入れない (前後にスペースがあるとエラー) 型は存在しない (declare コマンドや typeset コマンドで似たようなことができるが推奨はしない) 変数名の大文字・小文字は区別される (VAR と var は別物) 特に「2」は初心者が犯しがちなミスなので注意す

    変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • ログアウトしてもバックグラウンド ジョブを継続する方法

    はじめに SSH 接続で時間の掛かるシェルスクリプトをバックグラウンドで走らせて帰りたいのに、SSH 接続を切るとジョブが死んでしまいます。SSH 接続に限らず目の前の OS からログアウトしたりターミナル エミュレータを終了しても同じ現象が起こります。 この症状は正常です。なぜなら、バックグラウンド ジョブを起動したプロセス(ログイン シェル)が子プロセスである該当のバックグラウンドジョブをハングアップ シグナル( HUP )によって終了させるからです。 シェルスクリプトを起動した親プロセスは子プロセスの終了状態を監視しています。ですからログアウトして親プロセスであるシェルが終了すると子プロセスはゾンビ プロセスとなってしまうので親プロセスとなるシェル(ログインシェル)は子プロセスであるバックグラウンド ジョブを kill ( kill -HUP ) するのです。 nohup コマンド

    ログアウトしてもバックグラウンド ジョブを継続する方法
  • 1