[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

shellscriptに関するkazeburoのブックマーク (3)

  • Linux関連メモ - (shell) ${PIPESTATUS}

    OSコマンドの基動作として、パイプでコマンドを連結すると最後に実行されたコマンドの戻り値が特殊変数"$?"に格納される。 #[例1] コマンド1 | コマンド2 echo $? # コマンド2の戻り値が格納 各コマンドの戻り値の取得方法 ${PIPESTATUS}で取得可能 #[例2] exit 1 | exit 2 | true | false echo ${PIPESTATUS[@]} 1 2 0 1 ${PIPESTATUS}の使いどころ 「例1」で説明すると、「コマンド1が正常終了していること」がコマンド2の前提条件である為、コマンド1のコマンドも含め戻り値チェックが必要な場合。 具体例 パイプでつないだコマンドに戻り値が"0以外"が存在する場合はエラー出力しexitする動作を実装 #[例3] コマンド1 | コマンド2 | コマンド3 echo ${PIPESTATUS[@]}

  • bashによるシェルスクリプトの小技(2) - shibainu55日記

    前回(bashによるシェルスクリプトの小技(1))に引き続き、シェルによって自動的に値が設定される特殊な変数について紹介する。特殊な変数を参照することにより、様々な情報を取得することができる(ただし、これらの変数には自分で任意の値を設定することはできない)。 さて、まずは特殊変数を一覧でまとめてみる。お馴染みのものが多いが、最後の2つ(特に最後のPIPESTATUS)についてはきっと今まで知らなかった人もいるんじゃないだろうか。シェルの中でパイプすると途中のコマンドのリターンコード、拾えないとか思っていませんか?今回のポイントとしては、「1. PIPESTATUS変数について」と「2. 特殊変数 $@と$*の違いについて」の2点を主に説明する。 特殊変数一覧表 変数名 自動的に設定される値 $? 直前に実行されたコマンドの終了ステータスが設定される変数。正常終了の場合は「0」、異常終了の場

    bashによるシェルスクリプトの小技(2) - shibainu55日記
    kazeburo
    kazeburo 2013/03/28
    PIPESTATUS
  • "set -e"に関するメモ - Shohei Yoshida's Diary

    シェルスクリプトで #!/bin/sh set -e とすると、コマンド実行時に戻り値が 0以外になれば即座に終了 するという便利な機能があります。しかし diffコマンドのように 戻り値 0は差分なし、1は差分あり、それ以外はエラーみたいな 感じで戻り値を利用されると、diffの部分で処理が終了してしまう という問題があります。 #!/bin/sh set -e diff test/old.txt test/new.txt > test.patch echo "finish" のような場合, diff自体は成功しますが、それ以降が実行されず "finish"と表示されないということが起きます。 解決方法 コマンドを ifや whileの条件として書くことで、この問題を回避できます。 #!/bin/sh set -e if diff test/old.txt test/new.txt >

    "set -e"に関するメモ - Shohei Yoshida's Diary
  • 1