
Shell Scriptとは?特徴と作成・実行の基本を解説!
簡易的なプログラミング言語であるShell Script
こんにちは!
toiroフリーランス編集部です。
シェルに対してコマンドで命令を実行させることができるシェルスクリプトことShell Sctipt。
コマンドのみで操作する簡易的なプログラミング言語は、知識がないまま見ても意味がわかりません。
何をしているのか、どんな命令を実行させているのかといった部分が一切理解できないでしょう。
今回の記事ではそんなShell Scriptについて基礎的な部分から解説をしていきます。
また、SHell Scriptが持つ特徴や作成・実行の基本もチェックしていきましょう。
覚えておくと役に立つShell Scriptを書くときのテクニック・コツについても併せて紹介していきます。
Shell Scriptとは
Shell ScriptはUNIX系で用いられる「簡易的なプログラミング言語」です。
OSを操作するための「シェル」上で実行ができるスクリプト言語ですが、基本的に1行ずつ順番に「対話」していかなければなりません。
命令を入力して、結果を待ち、また入力して…といったサイクルを繰り返していくことになりますが、これでは余計に時間がかかってしまいますね。
まとめて記述する
こういった順番が決まっている命令や定められた処理をテキストファイルなどにまとめて記載したものを「Shell Script(シェルスクリプト)」といいます。
定期的に自動で実行できるようにしておくなど、記述の仕方でとても便利に活用できるでしょう。
UNIX系で使用する
UNIX系で用いられるため、Windowsでは用いません。
Windowsではバッチファイルを利用することができます。
Shell Scriptの持つ特徴
続いては、そんなShell Scriptの特徴に注目していきます。
Shell Scriptはシェルコマンドをそのまま利用できる
Shell Scriptはシェルで使うコマンドをそのまま使えます。
そのため、シェルのコマンドについて深く理解している人であれば、すんなりと記述していくことができるでしょう。
これは利点ともいえる部分です。
シェルで得たテクニック、そしてシェルスクリプトで得たテクニックをそれぞれで活用することができるでしょう。
テキストファイルを使う
先ほど少しだけ触れましたが、シェルスクリプトは基本的にテキストファイルを用いることになります。
そして、コンパイルなどは不要です。
他のプログラミング言語と大きく異なる部分だといえるでしょう。
とはいえ、やはり「スクリプト言語」的な特徴を持っているといえるのではないでしょうか。
同じくスクリプト言語であるJavaScriptやPHPなどもコンパイルは不要なので、似ている部分・共通点があることが分かります。
OSを問わない
シェルスクリプトはあくまで「シェルコマンド」です。
そのため、OSを問わずシェル上で動作させることができます。
むしろシェルスクリプトでOSを判別するようなプログラムを組んでいる方もいるほど。
色々な可能性を秘めているプログラミング言語ともいえるでしょう。
簡易的とはいえど、様々なことが実現できます。
Shell Scriptの基本
さて、それでは実際にShell Scriptを作成・実行する流れを解説していきます。
1行目でどのシェルを使うかを指定する
基本的にShell Scriptの1行目には「どのシェルを使うか」を記述しなければなりません。
例えば「#!/bin/bash」と記述すれば「bash」というシェルを利用することになります。
bashは広く浸透しているシェルで、多くのディストリビューションで標準となっているので覚えておきましょう。
また、bashの独自機能を使わない場合は「#!/bin/sh」という記述でも問題ありません。
echoコマンドで出力
文字を出力する際に利用するコマンドは「echo」です。
例えば「echo “Hello, World”」と記述すれば、出力結果として「Hello, World」が出力されます。
readコマンドで入力
何か任意の文字列などを入力したい際には「read」を利用します。
例えば、以下のシェルスクリプトを実行したとします。
- #!/bin/bash
- read sample
- echo “$sample”
このシェルスクリプトを実行すると「sample」への入力を受け付けてくれます。
任意の文字を入力すれば、その文字列が「echo」コマンドで返されるという処理です。
仮に「test」と入力したとすれば、実行結果も「test」が出力されます。
変数について
もちろん変数を宣言することも可能です。
半角英数字およびアンダースコアを利用できるので、基本的に他のプログラミング言語と遜色なく利用できるでしょう。
変数の代入時の注意点
また、注意点として代入時の「=」が挙げられます。
プログラミングをする上で、変数を宣言・代入する際に「=」前後にスペースを空ける方も多くいるでしょう。
例えば「a = 1」のようなイメージです。
しかし、シェルスクリプトでこれはできません。
必ず「=」の前後にスペースは空けずに「a=1」のように記述してください。
また、文字列も「a=”サンプル”」のように代入することができます。
コメントを記入したいとき
Shell Scriptでコメントアウトを利用したい際には「#」を使いましょう。
C言語やJavaでいうところの「//」に該当するため、行単位でコメントアウトすることが可能です。
シンプルかつ1文字で済むので慣れてしまえば楽にコメント機能を利用できるでしょう。
Shell Scriptを実行する方法
では実際に、Shell Scriptを実行する方法を解説します。
まずはインターフェースを立ち上げなければなりません。
Windowsであれば「コマンドプロンプト」か「PowerShell」、Macであれば「ターミナル」を起動してください。
先ほどお伝えした通り、Windowsでは「バッチファイル」を利用することになります。
MacはUNIX系なので、今回お伝えしているシェルコマンドを利用してShell Scriptを構築しましょう。
どちらもテキストファイルを利用します。
Windowsの場合
Windowsの場合、以下の記述で「test」と出力するバッチファイルを作成できます。
- echo test
- pause
ファイル形式を「.bat」にするのを忘れないようにしましょう。
特に他の設定は不要で、そのまま実行できます。
Macの場合
Macの場合は今回紹介している通り1行目に定型文を記載する必要があります。
同じ「test」という出力結果が得られるShell Script(.commandファイル)をチェックしてみましょう。
- #!/bin/bash
- echo “test”
- exit 0
これで「test」という結果が得られます。
Macの場合は権限の関係でそのままでは実行できません。
そのため、先にターミナル上で権限の変更コマンドを実行する必要があります。
.commandファイルを作成したディレクトリまでターミナル上で移動したら「chmod +x .command(ファイル名を記載する)」というコマンドを実行してください。
これで、実行ができるようになります。
Shell Scriptを書くテクニック・注意点10選
それではここから、Shell Scriptを実際に書く際のコツ・テクニック的なものや注意点を10個紹介していきます。
Shell Scriptはシンプルだからこそ、ちょっとした工夫でコードの読みやすさや扱い方が激変するといえるでしょう。
そのためにも、ちょっとしたテクニックを知っておくだけでコーディング効率などが一気に改善できる可能性もできます。
「:(コロン)」を使う
コロンを利用すると、正常終了を返します。
つまり「0」を返してくれるため、様々なシチュエーションで活用することができるでしょう。
ファイルの初期化として利用することもできるでしょう。
変数をダブルクォーテーションで括る
変数をダブルクォーテーションで括る意識は大切です。
仮に変数名が間違っていたり異なっていた場合、意図しない処理が行われてしまう可能性があるからです。
しかし、変数名を「””」で括っておけば「””」の部分でエラーが起こり、未然に防ぐことができるでしょう。
Shell Script内の相対パスは危険なことも
シェルコマンドなどを実行する際や、HTMLファイルなどでは絶対パスではなく相対パスがよく用いられます。
これは「今いるディレクトリ(カレントディレクトリ)から見た目的のファイルのディレクトリ」の表記方法。
対して、絶対パスはその名の通り「ファイルがどこにあるか」を明確に表すパスです。
Windowsのエクスプローラ画面でウィンドウ上部に見られます。
さて、ではどうしてShell Script内で相対パスが危険なことがあるかというと「Shell Scriptを実行した場所がカレントディレクトリになるから」です。
つまり、実行した状況によってカレントディレクトリが変わる可能性があります。
そのため、相対パスで記述していると本来意図したディレクトリではないファイルを参照・削除・作成してしまうかもしれません。
もちろん相対パスは絶対NGというわけではありませんが、基本的には絶対パスで記述した方が良いでしょう。
変数の初期化について
変数を初期化する際に、Shell Scriptでちょっとした工夫ができます。
- b=${a:=0}
上記のように記述すると、aが未定義だった場合に、aにもbにも「0」を代入することができます。
また、一見同じように見える下記に変えてみましょう。
- b=${a:-0}
=の部分を-に変えただけですが、若干挙動が変わります。
上記のようにすることで、aが未定義だった際「bに0を代入」することができます。
aはそのままということになりますね。
うまく活用すれば、よりShell Scriptの幅が広がるでしょう。
Shell Scriptの特別なコマンド
Shell Scriptには特別な変数があります。
例えば「$0」はスクリプト名。
$?で直前に実行したコマンドの終了値など、種類は様々です。
ぜひ適切に利用して、より効率的なShell Scriptを構築しましょう。
引数は使わない
普通、プログラミングで引数を利用するのは当たり前のことです。
むしろ使わないと不便にすら感じるでしょう。
しかし、Shell Scriptで引数を使うのは推奨できません。
極力標準入出力を利用するようにしましょう。
もちろん、既にShell Scriptについて深く理解できている方であれば問題はないでしょう。
if then
プログラミングでは当たり前の分岐処理、if文ですが、Shell Scriptにもif文は存在しています。
ifやelifなどで記述でき、非常にシンプルです。
- if [条件]
- then
- 処理内容
- elif [条件]
- then
- 処理内容
- else
- 処理内容
- fi
パッと見「elif」や「fi」など見慣れないものがあるかもしれませんが、シンプルであることに気が付くでしょう。
難しく考えすぎず、素直にif文を利用できます。
改行コードに注意
alt="" width="1024" height="683" />
Shell ScriptはOSを問わず実行できるというのは、既にお伝えしました。
しかし、OSによって改行コードが異なるという点は注意しておきましょう。
Windowsで特に何も指定せずに作成したファイルをそのままLinuxなどで実行することはできずエラーになります。
注意が必要です。
「;(セミコロン)」を書かない
alt="" width="1024" height="683" />
プログラミング経験があるとつい書いてしまいがちなのが、行末の「;」です。
ないと違和感すら覚えてしまうという方もいらっしゃるかもしれませんが、Shell Scriptで「;(セミコロン)」は必要ありません。
そのため、慣れるまで時間がかかる方もいるかもしれませんが必ず「;」は書かないように注意しましょう。
コメントを積極的に活用する
案外大切なのが「コメント」です。
この記事でも「#」を利用すればShell Scriptでコメントアウトできることをお伝えしました。
後から見返した際や、他の人がShell Scriptを見る際に分かりやすいよう、少し複雑な処理などには積極的にコメントを利用しましょう。
コマンドを書いている時には不要に感じるかもしれませんが、後になって「書いておけばよかった」となってからでは遅いです。
ぜひ積極的にコメントアウトを利用しましょう。
Shell Scriptは奥が深い
今回の記事ではShell Scriptについて注目・解説を行なってきました。
シンプルで簡易的なプログラミング言語といわれますが、かなり奥が深い分野でもあります。
シンプルだからこそ難しく、よく分からない記述の仕方などに直面することもあるでしょう。
そういった際にも諦めず理解できたとき、そのコマンドなどを扱えるようになったときには充実感や達成感を感じられるはずです。
Shell Scriptを使いこなせるようなエンジニアを目指していきましょう。
toiroフリーランスはフリーランスエンジニア向けのSHIFTグループ案件・求人情報サイトです。
プライムベンダーだからこそ、商流が深い多重下請けや不要な中抜きは一切なく、高単価・適正単価で業務委託案件をご案内しています。
アカウント登録後には、さまざまなサービスや機能を無料でご利用いただけます。
- 登録面談にてキャリア相談や案件マッチングのコツ、市場トレンドや耳寄りな情報をお伝えします
- 本サイトでは公開していない非公開案件をすべて確認可能
- ご希望条件に合うエージェントおすすめの案件を随時ご案内
個人事業主やフリーランスで活躍されている方、これから目指している方、少しでもご興味がある方はぜひお気軽にお問い合わせください!