記事一覧

新人さん向け!はじめてのBシェル




目次



Bシェルを学んでみよう

ハロー、みなさん。エジソンです。

今回は ”新人さん向け!はじめてのBシェル” というお題で記事をまとめてみました。

Bシェルは、UNIX系コンソールにおけるデフォルトのシェルとして利用されているもので、システム開発の現場でも数限りなく利用されているため、お仕事でBシェルに対する知識が求められることも少なくありません。

Wikipedia - Bourne Shell
Bourne Shell(ボーンシェル)は、Unix Version 7 のUnixシェルである。多くのUnix系システムでは現在もデフォルトのシェルとして一般に使われていて、ほとんどのシステムで、/bin/shは、Bourne Shellであるか、もしくは、その互換プログラムへのシンボリックリンクかハードリンクとなっている。…

そんな訳で、Bシェルについて学んでいきましょう。前回書いた、シェルコマンドの記事も要チェックですよー。

Related Posts

新人さん向け!知っておきたいUnixベースのシェルコマンド




Hello Worldシェルを書いてみる

最も単純なプログラムである、Hello Worldを書いてみましょう。

viでファイルを新規作成します。

hello-world.shという名前で保存しましょう。
#/bin/sh

echo 'Hello World'


ファイルを保存後、実行権限を付けます。
# chmod +x hello-world.sh

シェルを実行します。
# ./hello-world.sh
Hello World

カレントディレクトリのシェルを実行する場合には、必ず ./ファイル名 で実行しましょう。何故 ./ を付けるのかというと、環境変数の"PATH"に設定されているディレクトリ内に、同じファイル名のシェルがあった場合に、そちらが優先して実行されるからです。

そのような事故を未然に防ぐために、必ず ./ファイル名 でシェルを実行する癖を付けましょう

シェルをデバッグモードで実行する

デバッグモードで実行することで手早く構文エラーを取り除くことができます。

/bin/shは、shと省略しても良いと思います。xオプションを付与することで、先頭部分に + と出力された行に実行された命令文が表示されます。
# /bin/sh -x ./hello-world.sh
+ echo 'Hello World'
Hello World


変数の宣言と設定、参照

変数の使い方は以下の通りです。hello-worldと同じ手順で保存、実行権限の付与を行い実行してみてください。
#/bin/sh

# 代入
message="Hello World"

# 参照1
echo $message
# 参照2 どちらも同じ
echo ${message}



for / while文

サンプルを頑張って書いていこうと思いましたが、非常に良い記事を発見しましたので、そちらの記事をペタリとしておきます。ただのリンク集になってきている…。

UNIX & Linux コマンドシェルスクリプトリファレンス - for 文の使用方法
UNIX & Linux コマンドシェルスクリプトリファレンス - while 文の使用方法


忘れがちなセンテンス

直ぐに忘れてしまうセンテンスをまとめてみました…。

終了コード
終了コードは if文 でチェックする事が多いです。自らがシェルプログラムを書く場合には、任意のコマンド実行後に終了コードをif文で丁寧にチェックすることを心掛けると良いです。

#!/bin/sh

mkdir ./newDir
# mkdirの終了コードを参照
echo $?

# シェル自身の終了コードを設定
# 一般的に 0 が正常、 0 以外が異常です
exit 0

引数に関連する変数
以下のシェルを、param-test.shというファイル名で保存し、"./param-test.sh p1 p2"という形式で引数を2つ付与して、実行してみると良いでしょう。

#!/bin/sh

# 引数の数を出力
echo $#

# 実行時のコマンドを出力
echo $0

# 第一引数を出力
echo $1

# 第二引数を出力( $1 〜 $10 〜 $N といったように引数を参照することができる)
echo $2


引数に関連することは、以下のページを熟読すると良いかと思います。

UNIX & Linux コマンドシェルスクリプトリファレンス - 引数を処理する


バッククォートでコマンドの実行結果を変数に設定
バッククォートはキーボードで言う所の、@キーをShift入力で押下した際に入力できる文字(`)のことです。

#!/bin/sh

# dateコマンドの結果を変数に設定する
now=`date`

# 日付を出力する
echo $now



鉄板リファレンスサイト!

上述したリンクでも既に紹介していますが、以下のサイトがリファレンスサイトとして素晴らしいかったので、改めて紹介します。

UNIX & Linux コマンドシェルスクリプトリファレンス



関連記事

このエントリーをはてなブックマークに追加

コメント

コメントの投稿

非公開コメント

プロフィール

EZOLABブログへようこそ。
EZOLABは、札幌のソフトウェア会社です。

http://ezolab.co.jp