Web開発者向けのbashスクリプト入門


Web開発者は常にその効率を高める方法を探しています、そして、それをする1つの主要な方法は、少なくとも我々の日常活動を構成している程度、最も世俗的で反復的な仕事を自動化することです.それを支援することができますし、オーバーヘッドを必要とせずに使用するために必要なツールはbashスクリプトです.
この記事ではbashから始めましょう.私の目的は、開発者としてワークフローに加えて、その可能性を強調することです.
前の声明から明らかなように、私はあなたがソフトウェア開発に少しの知識を持っていると仮定します、あなたはgitとgithubが何であるか、そして、少なくとも端末が何であるかについてわかっています.
このチュートリアルと一緒に従うために必要なことは次のようなものです.
  • 端末( LinuxあるいはMac )
  • テキストエディタ
  • あなたがこれらを持っているならば、我々は始めることができます.

    導入


    bashとbashスクリプトとは


    Bashは再びBourneシェルであり、実行可能なコマンドでユーザーが入力できるコマンドプロセッサまたはインタプリタです.一方、bashスクリプトは単にbashコマンドのコレクションです.

    シンプルハロースクリプト


    簡単なHello Worldスクリプトから始めましょう.
    bashでは、端末に何かを出力するためのコンストラクトがecho キーワード.これはconsole.log JavaScriptでは単に引数を出力します.
    最初のスクリプトを作るには、単純なファイルを作成する必要がありますhello_world.sh .
    $ touch hello_world.sh
    
    我々のHello Worldスクリプトから始めるために、我々は我々のスクリプトでbashコマンドを作成します.開けるhello_world.sh テキストエディタでファイルを入力します
      #!/bin/bash
    
      echo "Hello world"
    

    実行可能ファイルの作成


    このスクリプトを実行するには、実行可能ファイルにする必要があります.現在のディレクトリのファイルをls -al , the hello_world.sh 作成したファイルは次のようになります

    The -rw-r--r-- セクションでは、現在のユーザがr EADとw そのファイルに対する儀式許可.
    このスクリプトを実行するには、次のコマンドを実行して、現在のユーザーの実行許可を追加します.
    $ chmod 755 hello_world.sh
    
    ランls -al もう一度、現在のパーミッションを参照してください.The x 現在のユーザがこのファイルのパーミッションを実行していることを示します.

    スクリプトの実行


    私たちのHello Worldスクリプトを実行するために./hello_world.sh カレントディレクトリ.このbashスクリプトは単に"hello world "という文字列を単に実行時に出力します.
    エキサイティングライト?🚀🔥
    この関数を引数に取り、その引数を出力するとどうなるか.そして、引数が与えられないならば、それはちょうどデフォルト「Hello World」挨拶を印刷することができます.
    引数の受信と使用を扱うスクリプトを更新します.

    スクリプトベーシック


    コマンドラインパラメータ


    スクリプトへの呼び出しの前にそれらを供給することで、スクリプトに引数を渡すことができます.それで、スクリプトを実行して、引数(例えば名前)を渡したいと言いましょう

    スクリプトを実行すると、文字列の文字列をジェーンに渡します.しかし、現在のスクリプトでこのパラメータを使用する方法はありません.
    コマンドライン引数は通常、実行中のスクリプトに与えられた引数のリストとして与えられます$1 最初の引数は$2 二つめで.
    したがって、上記の私たちのケースでは、名前を受け入れるためにスクリプトをアップデートして、名前とともに「挨拶」挨拶を印刷することができます.エディットhello_world.sh ファイルを置き換えます.
      #!/bin/bash
    
      echo "Hello" $1
    
    実行./hello_world.sh Jane 期待される結果を出力する

    …ならその他の条件


    今、私たちはスクリプトを与えられた名前で挨拶を印刷しておきます.引数なしでスクリプトを実行すると、「hello」と表示されます.我々は、bashの条件を使用してその機能を拡張することができます.簡単ならば...他のステートメントが行います.
    スクリプトを次のように更新します.
      #!/bin/bash
    
      if [ $1 ]; then
        echo "Hello" $1
      else
        echo "Hello World"
      fi
    
    上記で、コマンドライン引数がスクリプトに供給されたかどうかをチェックし、引数であいさつを出力します.さもなければ、「Hello World」を出力します.これを確認するために数回実行します.

    もっと実用的なスクリプトスクリプト


    今、私はあなたが「Hello World」スクリプトで多くをすることができないのを理解します.
    このために、我々は開発者が彼らの毎日の活動において持っていると思う問題を解決するために見ます.
    選択したフォルダに新しいファイルを作成するclone_repo.sh . 実行時に実行許可をファイルに追加するchmod 755 clone_repo.sh次の入力
      #!/bin/bash
    
      echo "Initializing git clone $1"
    
      git clone $1
    
      basename=$(basename $1)
      folder_name=${basename%.*}
    
      echo "Changed directory to $folder_name"
      cd $folder_name
      exec bash
    
    上記のスクリプトはかなり明白です.まずGitクローンの開始を通知するメッセージを出力します.その後、実際のGitクローンコマンドを実行します.(このスクリプトでは、Gitが環境にインストールされていると仮定します).
    次に、私たちはbasename これは標準のUnixプログラムで、末尾のスラッシュを無視して与えられたGithub URLから最後の名前を取得します.次の行は、Github URLにもaがある場合に正しいパス名を取得するために、それを消毒します**.git での拡張子https://github.com/ceoehis/reactive-weather.git .
    正しいフォルダ名を取得した後、我々は、我々は別のを介して設定されている場所にユーザーに通知てecho そして、cd またはフォルダ名にディレクトリを変更します.
    最後の行は、スクリプトの最後に現在のbashインスタンスを実行するための呼び出しですcd 親シェルに影響を与えるコマンド.これはbashスクリプトが通常シェルで動作し、親シェルの作業ディレクトリを変更できないためです.つまり、cd コマンドは通常、親シェルに影響を与えません.そのためにcd コマンドは親シェルに影響を与えますexec 上記のスクリプトの子bashインスタンスをuteにします.
    最後に、このスクリプトを実行し、githubリポジトリを引数として渡す必要があります.
    $ ./clone_repo.sh https://github.com/ceoehis/reactive-weather.git
    

    Voila!repoはうまく処理され、結果のディレクトリは現在の作業ディレクトリになりました.🔥💪🏽
    私たちのデモスクリプトをいくつかの方法で改善することができます.潜在的なエラーを処理することによって、このスクリプトのユーザーエクスペリエンスを向上させることができます.
    シェルスクリプトを使用して可能性は無限のですが、いくつかのタスクを自動化するコンソールに名前を印刷するから.このチュートリアルでは、基本的なbashの構造とスクリプトから始めるための入門書です.下記のリンクでより多くのリソースを見つけることができます.
    Shell Scripting tutorial
    Bash for beginners
    読書ありがとう.この記事はもともと私のものになったblog