タグ

shellに関するabetomotomoのブックマーク (11)

  • bashの正規表現マッチングの使い方 - adsaria mood

    あるフリーウェアのインストール用bashプログラムを見ていたら次の様なものがあった。(以下の例は簡略化してある。) STRING="abc" if [[ "$STRING" =~ "^ab[cd]$" ]]; then echo "matched" else echo "unmatched" fi if文の条件表現の中に“=~”というオペレータがある。manを見ると =~ オペレータは文字列を正規表現と比較するとある。知らなかった。bashの文字列比較で正規表現が使えるとは。私は正規表現比較が必要な時はgrepに喰わせて判断していたのだが、これを使えば簡単にできる。 ところが、だ。上のプログラムが期待通りに動かない。上の例では =~ の左辺と右辺の正規表現はマッチするはずだが、結果は“unmatched”。色々と正規表現を変えてみたが、どれとしてマッチングしない。しかし、if文を次のように

    bashの正規表現マッチングの使い方 - adsaria mood
    abetomotomo
    abetomotomo 2012/04/16
    正規表現
  • シェルスクリプトでプロセスを監視し自動実行&自動kill

    追記:プロセスの監視&自動復旧(簡易版) 今ある検索エンジンのデバッグを行っていますが、事情により短期間ですがクローズドな環境で運用されることになりました。構成は大きく分けてエンジンモジュールサーバ、クエリーモジュールサーバの二つのサーバからなっています。 デバッグはまだ途中なので、運用中にクエリーサーバorエンジンサーバのどちらか、もしくは両方が落ちる可能性もあります。落ちた場合は、手動で起動しなおすことになっていますが、せっかくなので自動化しよう。と、考えました。最初はcronデーモンを用いようと思いましたが、プロセスの監視(dead or alive)の仕方が分からず(調べきれず)、シェルスクリプトを用いることにしました(とは言うもののシェルスクリプトを使うのも初めてでした)。 クエリーサーバ&エンジンサーバのプロセスを一定の間隔で監視し、一方が何らかの原因で落ちた際は、再び二つのプ

    シェルスクリプトでプロセスを監視し自動実行&自動kill
  • シェルスクリプト入門 [変数]

    変数 シェル変数 変数は文字列や数値など、さまざまなデータを記憶しておくものです。変数名に使える文字は、英数字または「 _ 」(アンダーバー)で、1文字目に数字は使えません。変数に値を代入するには「変数名=値」とします。「=」の前後にはスペースやタブを入れることはできません。変数を参照する場合は、変数名の前に「$」を付けます。下記の例を参考に解説します。 test.sh #!/bin/sh #-----変数に値を代入します----- PARA1="string" PARA2=string PARA3=3 PARA4=`date '+%Y-%m-%d'` #-----変数を「echo」で表示します----- echo "PARA1 = ${PARA1}" echo "PARA2 = ${PARA2}" echo "PARA3 = ${PARA3}" echo "PARA

    abetomotomo
    abetomotomo 2012/04/05
    変数、特殊変数
  • シェルスクリプトの多重起動を防ぎたい! - uunfo’s blog

    これでいいかな? すでに他のプロセスで起動していたら何もせずに終了する。 if [ $$ != `pgrep -fo $0` ]; then exit 1 fi $$ 自分のプロセスID pgrep プロセスをgrepしてプロセスIDのリスト返す -f プロセス名だけではなくて引数などコマンド全体を検索対象にする(ps -fの値ということ) -o マッチした中で一番古いプロセスIDだけを返す $0 起動時の自分の名前 呼び出し毎に引数が違う場合は$0の代わりにbasename $0"$0 $@"を使えばいいかな。 参考 http://www.sssg.org/blogs/naoya/archives/672 以下はロックファイルで制御し、異常終了時はtrapで対処するというもの。 MSN Japan - ニュース, 天気, メール (Outlook, Hotmail), Bing検索, S

    シェルスクリプトの多重起動を防ぎたい! - uunfo’s blog
    abetomotomo
    abetomotomo 2012/04/05
    多重起動防止
  • シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third

    エンジニアという職業柄かシェルスクリプトを書くことはちょくちょくあるのですが、自分なりに気を付けていることを備忘録&自分への戒めも含めて、簡単に書いてみたいと思います。 変数は大文字 シェルスクリプト書いていれば変数の出番は至るところであるでしょう。その際、可読性を増すように、変数は大文字を使っています。 RET=`cmd1`みたいに。好みの問題もあるでしょうが、分かりやすいので。 クオテーションは選ぶ クオテーションにはシングルだったり、ダブルだったり色々ありますが、使い分けておいたほうがよいでしょう。 変数の展開がないようであれば、シングルクオーテーションのほうがスマートでしょうし、展開があるのならダブルクオーテーションを使えばと。 ダブルクオーテーションを使うのにも意味があって、変数は「$RET」のようにクオテーションで囲まなくても動作はたいていするのですが、 echo "${RET

    シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third
  • awk歴一日の初心者が語るawk理解のポイント - シリコンの谷のゾンビ

    今までテキスト処理などでワンライナーを使うときはperlを使っていた.Perlを先に覚えた身としてはawkやsedは過去の産物だと思い込んでいた.awkの方が簡潔に書けるケースに出くわしたことをきっかけにawkを勉強してみたら単なわず嫌いだったことに気が付いたのでポイントをまとめてみる. なおプログラミング言語としてはAWKという表記が正しく (Aho, Weinberger, Kernighanの頭文字! ということだけは以前から知っていた),オリジナル処理系のことをawkと呼ぶのだろうけれど,今回は処理系の違いは気にしないのでawk, nawk, gawkの違いは気にしないことにした.ていうか詳しく知らない. 「awkってなんぞ?」という方が対象読者.スクリプト言語と正規表現の基礎知識が少しでもあれば,たぶんすぐに使えるようになると思う.awkを一度でも使ったことがある人には新しい情

    awk歴一日の初心者が語るawk理解のポイント - シリコンの谷のゾンビ
  • シェルでオラクル(Oracle)に引数を渡し、実行後メッセージを貰う

    <IT技術の処方箋:シェルでオラクル(Oracle)に引数を渡し、実行後メッセージを貰う> シェルでOracleに引数を渡して実行して実行ステータスを取得する方法です。 流れとしては、シェル→SQLスクリプト→(プロシージャなど)となります。 以下の例では、aa.shを叩くと、 aa.sh → aa.sql → AAA_PROCEDUREという順番で実行されて、 ステータスが返却されます。 ●シェル(aa.sh) #!/bin/bash MSG=`sqlplus user/pass@SID @aa.sql $1 $2` echo $MSG ●SQLスクリプト(aa.sql) set feed off; set head off; set serverout on; exec AAA_PROCEDURE('$1','$2'); exit; $1と$2は引数です。 @aa.sqlは絶対パスの指

  • シェルスクリプト(Bash)

    シェルスクリプトとはコマンドやシェルの組み込みコマンドなどをファイルに記述し、実行できるようにしたものである。 またプログラムの制御構造なども使用でき、柔軟な処理が可能であり、/etc/rc.d/initd/ディレクトリ内の起動スクリプトなどはシェルスクリプトである。 シェルスクリプトを実行するには実行権限および読み込み権限が必要です。 またシェルスクリプトファイルの1行目にはシェルスクリプトを実行するシェルのパスを記述します。 スクリプトファイル内でも、シェル変数を定義することができる。またその変数を参照する場合は変数名の前に" $ "を 付けることで参照できる。変数名に使用できる文字は英数字および" _ "(アンダーバー)であり先頭は英字を使用しなくてはならない。

  • シェルの実行ファイル位置の取得

    sh実行時に絶対パスで指定するのですが、その実行したshのディレクトリは取得できないのでしょうか。 実行した後にそのパスを利用してシェル位置まで移動したいです。 /home/user/xxxxx/yyyyy/zzzzz/aaa.sh ↑をどこの場所で実行しても実行後には /home/user/xxxxx/yyyyy/zzzzz/の位置に移動をしていたいのですが、 シェル内で/home/user/xxxxx/yyyyy/zzzzz/を取得する事は可能でしょうか。

    シェルの実行ファイル位置の取得
    abetomotomo
    abetomotomo 2010/08/02
    カレントディレクトリ取得
  • Bash基礎文法最速マスター - いろいろ解析日記

    Bashの文法一覧です。他の言語をある程度知っている人はこれを読めばBashの基礎をマスターしてBashを書くことができるようになっています。簡易リファレンスとしても利用できると思いますので、これは足りないと思うものがあれば教えてください。 1.基礎 echo文 echo文です。 echo "Hello world" コメント コメントです。 # コメント 変数の宣言 変数の宣言です。 # 文字列変数 declare str # 数値変数 declare -i num # 配列変数 declare -a array スクリプトの実行 スクリプトを実行するにはコマンドラインで次のようにします。 bash script.sh 出力結果をファイルに書き出すにはリダイレクトを使います。 bash script.sh > file.txt 文法チェック 事前に文法チェックを行うには、次のようにします

    Bash基礎文法最速マスター - いろいろ解析日記
  • UNIXの部屋 検索-リダイレクト

    最終更新 2019-01-27 UNIX/Linux のシェル sh・bash・csh・tcsh のリダイレクトを説明する。ファイルへの出力、コマンド出力を別のコマンドの入力とする、標準入力・標準出力・標準エラー出力、パイプなどもあわせて説明する。

  • 1