知っておくとちょっと便利!シェルスクリプトの作り方1

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

今号では、知っておくとちょっと便利なシェルスクリプトの基本、および簡単なサンプルプログラムについてご紹介します!

シェルスクリプトとは?

シェルスクリプトは、テキストファイルにコマンドを列挙し、処理を一括して実行するために使用します。
複数の処理を定期的に実行したい場合にシェルスクリプトを作っておけば、逐一コマンドを入力・実行する手間が省けます。

基本の書き方

# cat test.sh 
#!/bin/bash
…

スクリプトの最初の1行目 #!/bin/bash#!/bin/sh と記載することもあります。
これらの違いはシェルを動作させるプログラムの種類の違いによるものですが、ほとんどの場合、どちらを使用しても動作に違いはありません。
2行目以降に、実行させたいコマンド等を記載していきます。

コマンド例1 (引数・終了ステータス)

1) 引数に関するコマンド

  • $#
    指定された引数の数が設定されます。

    # cat oss1.sh
    #!/bin/bash
    echo $#
    
    # ./oss1.sh 1 b c
    3
    

    上記の場合、指定した引数 (a,b,c) の合計数 である 3 が表示されます。

  • $1-$n
    指定された引数の中身(値)が設定されます。

    # cat oss2.sh
    #!/bin/bash
    echo $1
    echo $2
    echo $3
    
    # ./oss2.sh a b c
    a
    b
    c
    

    上記の場合、スクリプト内で$1~$3を指定しているため、1~3番目までの引数の値 a,b,c が表示されます。

2) 終了ステータスを表示するコマンド

  • $?
    当該シェルスクリプトの終了ステータス (0なら正常終了、0以外なら異常終了) が設定されます。

    # cat oss3.sh
    #!/bin/bash
    ls -l oss3.sh
    echo $?
    ls -l oss0.sh
    echo $?
    
    # ./oss3.sh
    -rwxr--r--. 1 root root 56  1月 24 11:10 oss3.sh
    0
    ls: oss0.sh にアクセスできません: そのようなファイルやディレクトリはありません
    2
    

    上記の場合、スクリプト内で ls -l コマンドを実行し、対象ファイルの詳細情報を取得します。
    oss3.sh は存在するためファイルの詳細が表示され、終了ステータスとして 0 が表示されましたが、oss0.sh は存在しないためエラーとなり、終了ステータスとして 2 が表示されました。

    なお、0以外の場合にどのような数値が設定されるかは、各コマンドの実装によります。

※次号以降も、数回に分けてシェルスクリプトのコマンド例や作り方についてご紹介していきます。

アバター画像
About 貝野 友香 69 Articles
OSSよろず相談室でサポートをやっています。時々ライブ配信や勉強会に出ていることもあります。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる