環境表示
こちらの記事を元に作って見ました。 環境設定がないとやはり再現できない原因がわからないなど困ることがありますね。
検証環境
- CPU Intel® Core™ i5-2500 CPU @ 3.30GHz
- MEMORY 16318172 kB
- DISTRIBUTION Ubuntu
- RELEASE VER 16.04
- CODE NAME xenial
- KERNEL GNU/Linux
これだけだとただ書き写しただけなのでちょい足ししました。
関数を使って2通りの出力内容にした
出力オプションで-l:リスト形式、-t:テーブル形式で出力(getoptsを使用)
オプション違いはusageを出力
getoptsはbashのビルトインコマンドでコマンドライン引数を指定した変数に順次格納していくコマンドです。 書式は
getopts オプション文字の羅列 格納する変数
今回は-lと-tなのでオプション文字に「lt」と書きました。 値を設定するオプションの場合は:(コロン)を後ろにつけると変数OPTARGに値が保持されるので、値付きの場合はコロンをつけます。 例) -f table などとしたい場合 getopts f: OPT にすると、OPTにfが入った時に、OPTARGにtableが設定されます。
ファイル内容はこうなりました 当方Ubuntuなのでコマンドとかはちょっと変わります。
#!/bin/bash # 環境取得 DIST_FILE="/etc/lsb-release" MACHINE=$(uname -m) CPU=$(grep "model name" /proc/cpuinfo|head -1) MEM=$(grep "MemTotal" /proc/meminfo) DISTRIB=$(grep DISTRIB_ID $DIST_FILE) OS_VER=$(grep DISTRIB_RELEASE $DIST_FILE) OS_NAME=$(grep DISTRIB_CODENAME $DIST_FILE) KERNEL_VER=$(uname -o) # MarkDown 形式で出力 # リスト形式 list() { echo "- CPU ${CPU##*:}" echo "- MEMORY ${MEM##*:}" echo "- DISTRIBUTION ${DISTRIB#*=}" echo "- RELEASE VER ${OS_VER#*=}" echo "- CODE NAME ${OS_NAME#*=}" echo "- KERNEL $KERNEL_VER" } # テーブル形式 table() { echo "|カテゴリ|スペック|" echo "|:-|:-|" echo "|DISTRIBUTION|${DISTRIB#*=}|" echo "|RELEASE VER|${OS_VER#*=}|" echo "|CODE NAME|${OS_NAME#*=}|" echo "|KERNEL|$KERNEL_VER|" } # usage usage() { echo "usage:" echo "$0 [-l|-t]" echo "-l:list / -t:table" } if [ $# -ne 1 ]; then usage exit -1 fi echo "#### 検証環境" echo "" while getopts lt OPT do case $OPT in "l") list;; "t") table;; *) usage;; esac done
-tの時の出力
検証環境
カテゴリ | スペック |
---|---|
CPU | Intel® Core™ i5-2500 CPU @ 3.30GHz |
MEMORY | 16318172 kB |
DISTRIBUTION | Ubuntu |
RELEASE VER | 16.04 |
CODE NAME | xenial |
KERNEL | GNU/Linux |