モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

シェルスクリプトにおける条件分岐

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2013/07/26
最終更新最終更新
2020/10/02
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    Pythonを使ったFlaskアプリ開発が得意

    0
    ステッカーを贈るとは?

    if-elif-else

    C言語など、一般の言語と同様にif文による条件分岐が記述できます。
    elif ('else if'でも'elsif'でもない) であったり、then, fiと記述されるあたりなどが、Rubyとよく似ています。
    以下のサンプルでは、testというファイルのステータスを確認するコマンドを用いています。

    sample.sh

    #!/bin/sh
    
    if test -r sample.sh
    then
        echo 'sample.sh exists and can be read.'
    elif test -f sample.sh; then  # 一行で記述するときはセミコロンが必須
        echo 'sample.sh exists'
    else
        echo 'sample.sh does not exist'
    fi
    
    
    if [ -f sample.sh ]; then  # []はtestの略記法
        echo 1024
    fi
    

    実行例 (chmod +x sample.sh を忘れずに)

    $ ./sample.sh
    sample.sh exists and can be read.
    1024
    

    正規表現等を使う (bash 記法)

    [[]] で囲むと正規表現等を使えます。

    sample.bash

    #!/bin/bash
    
    if [[ "aaa" == *aa ]]; then
        echo "true"
    else
        echo "false"
    fi
    
    if [[ "aaa" =~ [a-z]{3} ]]; then
        echo "true"
    else
        echo "false"
    fi
    

    実行例

    $ bash sample.bash
    true
    true
    

    case

    ) の左の合致文字列では、ワイルドカードが使用できます。*) とすることで、C言語などのdefault相当の分岐ができます。

    sample.sh

    #!/bin/sh
    
    VAR=xyz
    case $VAR in
        XYZ) echo "VAR is XYZ" ;;
        xyz) echo "VAR is xyz" ;;
        *) echo "ELSE" ;;
    esac
    

    実行例

    $ ./sample.sh
    VAR is xyz
    
    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    Pythonを使ったFlaskアプリ開発が得意

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事

      • UNIX リダイレクションについて
        「下記ファイルディスクリプタがプロセスと結びつける対象ファイル」を別のファイルに変更することをリダイレクションとよびます。実際には、ファイルディスクリプタ1と2の対象ファイルの変更を指すことが多いです。 ファイルディスクリプタとは? ファイルディスクリプタは「プロセス」と「プロセスが使用するファイル」を結びつけるもので、それらには0,1,2,...と連続した番号が割り当てられています。ファイルディ...
      • シェルスクリプトにおける数値計算
        シェル変数はすべて文字列扱いであるため、数値計算のためには専用のコマンドを用いる必要があります。 整数同士の計算 整数同士の四則演算にはexprコマンドを使用します。 sample.sh #!/bin/sh expr 1 + 1 expr 1 - 1 expr 1 '*' 1 # ワイルドカードと区別するために、クォーテーションで囲う必要があります expr 1 / 1 expr 1 % 1 実行...
      • egrepとgrepの違い
        grepは 'g'lobal 'r'egular 'e'xpression 'p'rint つまり、全体から正規表現で一致したものを抽出するためのコマンドです。egrepは 'e'xtended grep つまりgrepの機能拡張版です。拡張正規表現とよばれる式が使用できるため、grepと比較して高度な抽出が可能になります。とはいえ、grepに'-E'オプションを付与して実行するとegrepとほぼ...
      • シェルスクリプトにおける関数定義
        シェル関数は複数のコマンドをひとまとめにしたものです。引数の取得では、シェルスクリプトの引数と同じ名称の特殊変数を使用します。また、独自のローカル変数を用意することができないため、関数外で使用されている変数の内容を書き換えてしまう危険性があります。 シェル関数は複数のコマンドをまとめたもの sample.sh #!/bin/sh echo1(){ echo 1 } echo1 実行例 $ ...
      • シェルスクリプトでシグナルをキャッチする
        無限ループに陥ってしまったプロセスを強制終了させるためにはCtrl-Cやkillコマンドを利用します。このとき、プロセスにはシグナルというものが送られています。プロセスはシグナルの種類に応じて既定された処理を実行します。trapコマンドを用いると、各シグナル番号に対応する既定の処理を書き換えることができます。 trapコマンド シグナルN1, N2, N3, ...を受けたときに実行するコマンドを...