46
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【初心者向け】シェルスクリプトの作り方

Last updated at Posted at 2018-10-13

この記事は簡単なシェルスクリプトの作成方法から、実行するところまでやさしく解説する
シェルスクリプト入門です。

動作環境 Linux CentOS 7 / bash 4.2.46

#シェルスクリプトについて

  • 実行したい一連のコマンドを、あらかじめ記述しておくファイルのこと
  • 実行したい処理をシェルスクリプトで書くことによって、作業の自動化が可能になる

簡単なシェルスクリプトの作成

Hello world を表示する、簡単なシェルスクリプトを作ってみましょう。

①作成する前に何のシェルでログイン利用しているか、コマンドラインでチェックしてみます。

$echo $SHELL
/bin/bash
  • $SHELLはシェル変数と呼び、ログインシェルのパスが格納されています。

②コマンドラインにてhello.shを作成します。

$vi ./hello.sh
hello.sh
#!/bin/bash
echo "Hello world!"
  • シェルスクリプトの拡張子は慣習で.shとします。
  • #!bin/bashはshebang(シェバン)といい、bashで動作しますよという宣言です。
    標準シェルのshの場合には#!/bin/shとします。

シェルスクリプトの実行

シェルスクリプトの実行方法を3通り紹介します。

①bashの引数として実行

こちらは実行権限がなくても実行可能です。
※ファイル名のみの指定で実行できるのはカレントディレクトリにある場合のみ
ファイルが別のディレクトリにある場合は、絶対パスもしくは相対パスで指定

$bash hello.sh
Hello world!

②ファイル名を指定して実行

実行する前に、実行権限をつける必要があります。

$chmod 755 ./hello.sh

または

$chmod +x ./hello.sh

これで実行権限が付与されたので、実行可能です。

$./hello.sh
Hello world!
  • ./でカレントディレクトリを指定する必要があります。

③コマンドとして実行する方法

最後にシェルスクリプトを自作コマンドとして実行する方法を紹介します。
PATHを通すことによってコマンドとして実行できるのでおすすめです。

条件
1.実行権限があること
2.PATHが通っていること

まずは実行権限を付与

$chmod 755 ./hello.sh

または

$chmod +x ./hello.sh

次に自分のシェルスクリプト置き場を作成し、そこに先ほどのhello.shを移動させます。
自分はshellscriptというディレクトリ名で、置き場所を作成しました。

$mkdir ~/shellscript
$mv ./hello.sh ~/shellscript

最後に.bash_profileを編集し、/shellscriptへのPATHを通します。

$vi  ~/.bash_profile
.bash_profile
PATH=$PATH:~/shellscript
export PATH
$source ~/.bash_profile

これでhello.shをコマンドとして実行することが可能になりました!
どこのディレクトリからでも実行可能です!

$cd ~ 
$hello.sh
Hello world!
46
55
0

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
46
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?