Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@Hayao0819

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

More than 1 year has passed since last update.

概要

シェルスクリプト(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 "読み込み中です..."
5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Hayao0819
Fascode所属、AlterLinux開発担当。 ArchLinuxの派生OSを開発、theShellの日本語化も行っています。 Serene-Startdashなどシェルスクリプトを利用したものを開発しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?