タグ

shellに関するnihohiのブックマーク (6)

  • 3分理解!シェルスクリプトでのcaseの使い方

    シェルスクリプトでの条件分岐ではifがよく使われる。 しかし条件分岐の方法はifだけではなく、caseも使いやすい場合がある。 このページではシェルスクリプトでのcaseの使い方についてお伝えしよう。 条件分岐をさせるcase caseとは? caseとは条件にマッチしたケースで処理を決めていくパターンだ。 例えば、変数の値が「appleであればリンゴを表示」「orangeであればオレンジを表示」「grapeであればブドウを表示」というプログラムがあったとき、caseを使うと便利だ。 ifでももちろん表現できるが、caseの方が使いやすい。 caseはC言語のswitchに相当する。if文とくらべると複雑な条件はたてるのには向いていない。caseでできることはifでも可能なので、現にPythonなどではcaseにあたる文法は存在しない。 しかし一つの変数で多くの分岐選択肢を設定できるので、

    3分理解!シェルスクリプトでのcaseの使い方
  • シェルスクリプト入門 [サンプルスクリプト集]

    サンプルスクリプト集 共通関数を外部ファイルに作成する 各シェルスクリプトで共通に使用したい関数を外部ファイルに作成しておくと便利です。外部ファイルの読込は、各シェル内で「 . ファイル名 」と記述すれば外部ファイルに記述した関数を使用できます。外部ファイルに「変数」を定義しても同様に使用できます。以下は関数のサンプルです。 sample.fnc # --共通関数定義-- # ログ出力関数 LOG() { # ログ出力先 LOG_DIR=./ # 引数展開 FILENM=`basename $0` MSG=$1 # 変数定義 LOG_DATE=`date '+%Y-%m-%d'` LOG_TIME=`date '+%H:%M:%S'` LOGFILE="${LOG_DIR}${LOG_DATE}_`basename $0 .sh`.

  • ループ文のリダイレクト、パイプとバックグランドでの実行

    for, while, untilのループ制御文はdo〜doneとで囲ま れるコマンド群を1つのコマンドのように実行しますのでループ全体の入出力をリダイ レクトしたり、パイプに接続することができます。バックグランドでの実行もループ全体 が対象となります。 次のリストはfor文の標準出力をリダイレクトする例です。 1 for i in beer carrot ell 2 do echo $i 3 done >food ループ全体が1つのコマンドとして扱われますからリダイレクト文字 > はループの終了を表すdoneの後書きます。この時のリダイレクト対象はループ 内で標準出力に書き出すものすべてが対象となります。 しかし、ループ内でリダイレクト先が明示されているものはループ全体の ものに優先してされます。例えば、上記のリストで 4 for i in beer carrot ell 5 do ec

    nihohi
    nihohi 2013/06/19
    for文とかでbg実行
  • disownコマンド - Do You PHP はてブロ

    昨日知りましたw disownはバックグラウンドプロセスをデーモン化するbashの組み込みコマンドで、引数に"%"+ジョブ番号を指定します。 以下、使用例。 $ cat tmp.php <?php while (true) { sleep(10); file_put_contents('/tmp/tmp.php.log', date('YmdHis'). PHP_EOL, FILE_APPEND|FILE_TEXT); } $ php tmp.php & [1] 31993 $ jobs [1]+ Running php tmp.php & $ disown %1 $ jobs $これでターミナルを終了させても大丈夫。 再度ターミナルで繋げて、pstree確認してみると、initプロセスの子プロセスになっているのが分かります。 init(1)─┬─atd(1819) : ├─mingett

    disownコマンド - Do You PHP はてブロ
  • ロボットの育て方:【Tips】ジョブの管理(nohup, disown, 一時停止・再開)【Linux】 - livedoor Blog(ブログ)

    linux(bash)でログアウトしてもジョブを停止したくないとき. $ nohup ./program nohupし忘れて途中からnohupしたいとき, (ジョブ番号を1とする) $ disown %1これで,shellのジョブ管理から切り離されるので ログアウトしてもジョブは実行され続ける. この時,コマンドをbgでバックグラウンドジョブにしておかないと 停止したまま,shellの管理を離れてしまう. そこでkillコマンドでプロセスにCONTシグナルを送ると再開する. $ kill -CONT pid逆に直接管理下にないプロセスを一時停止したいとき. $ kill -STOP pidkillコマンドは字面からプロセスを殺すことが目的か というとそうでもなく, シグナルを送るのがお仕事だったりする. 参考 Manpage of BASH Manpage of KILL

  • 一見読みにくい記法もシェルスクリプトの流儀

    前回に引き続き、今回もOS付属のシェルスクリプトを読んでいく。「当にこれでいいのか?」と思うような読みにくい記述も見つかるが、よく読むとシェルスクリプトならではの流儀を学ぶことができる(編集部) とにかく何か作ってみろ シェルスクリプトはお世辞にも読みやすいプログラミング言語とは言えない。ほかの言語にはない特有のルールがあるので、あまり経験がない人がちょっと複雑なシェルスクリプトを読むと嫌になってしまうかもしれない。 その半面、シェルスクリプトにはちょっと書いてすぐに試せるという良い点がある。シェルスクリプトの解説書やソースコードを読みながら「なんだかよく分からない」「マニュアルを読んでもよく分からない」という人には、短くてもいいからとにかく何かシェルスクリプトを書いて、試してみることを強くお勧めする。 これはどんなプログラミング言語にも言えることだが、習得しようと思っても、解説書を読ん

    一見読みにくい記法もシェルスクリプトの流儀
  • 1