LoginSignup
4
7

More than 3 years have passed since last update.

シェルスクリプトの便利な関数

Last updated at Posted at 2020-02-10

概要

シェルスクリプト(bash)でスクリプトを書く上で利便性の高い関数をまとめました。

CLI

色付きのecho

赤、青、黄の3種類を用意しておくと、エラー、メッセージ、警告と使い分けられます。

エラーなどに使います。

function echo_r () {
    echo -e "\033[1;31m$@\033[0;39m" >&2
    return 0
}

経過表示などに使います。

function echo_b () {
    echo -e "\033[1;36m$@\033[0;39m"
    return 0
}

警告などに使います。

function echo_y () {
    echo -e "\033[0;33m$@\033[0;39m" >&2
    return 0
}

ユーザの存在をチェック

存在するならtrueしないならfalseを返します。

function user_check () {
    if [[ $(getent passwd $1 > /dev/null ; printf $?) = 0 ]]; then
        true
    else
        false
    fi
}

使い方

if user_check hoge; then
    echo "ユーザーhogeは存在しています。"
else
    echo "ユーザーhogeは存在していません。"
fi

補足

コメントで教えてもらいましたが、以下のようにもできるようです。
if文は長くなってしまいますが、全体の行数は減りますね。

if id hoge >/dev/null 2>&1; then
    echo "ユーザーhogeは存在しています。"
else
    echo "ユーザーhogeは存在していません。"
fi

GUI

シェルスクリプトでGUIを扱うにはzenityを使います。
簡単なGUIフロントエンドはこれで十分実装できます。

ウィンドウの基本

下のスクリプトはこれを定義した上で使います。

function window () {
    zenity \
        --title="ウィンドウタイトル" \
        --window-icon="ウィンドウアイコン" \
        $@
}

経過

function info () {
    window \
        --info \
        --width="$1" \
        --height="$2" \
        --text="$3"
}

使い方

info <横幅> <高さ> "文字列" 
info 500 100 "処理が完了しました。"

注意

function warning () {
    window \
        --warning \
        --width="$1" \
        --height="$2" \
        --text="$3"
}

使い方

warning <横幅> <高さ> "文字列" 
warning 500 100 "デバッグモードです。"

エラー

function error () {
    window \
        --error \
        --width="$1" \
        --height="$2" \
        --text="$3"
}

使い方

error <横幅> <高さ> "文字列" 
error 500 100 "エラーが発生しました。"

ローディング

function loading () {
    window \
        --progress \
        --auto-close \
        --pulsate \
        --width="$1" \
        --height="$2" \
        --text="$3"
}

使い方

<コマンド> | loading 500 100 "文字列"
sleep 5 | loading 500 100 "読み込み中です..."
4
7
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7