Linux標準教科書 9章復習

シェルスクリプト

  • シェルとシェルスクリプト

    • カーネルを操作するためにはOSと対話的に操作する必要がある
    • シェルはカーネルとの対話機能を提供するもの
    • シェルはコマンド入力を受け付け、入力したユーザに結果を返す
    • シェルスクリプトにより複数のコマンドを効率よく実行できる
  • プログラミング

    • コンピュータに対し、指示を与え順番に実行させる機能をプログラムという
    • プログラムを作成することをプログラミングという
    • 条件分岐や繰り返しなどの制御機能を実行することをシェルスクリプトと呼ぶ
  • プログラムの要素

    • 順次実行
    • 条件分岐
    • 繰り返し
    • サブルーチン
  • シェルスクリプトの作成

    • 1行目には利用するシェルの種類とコマンド位置を指定
  • コメント

  • echo

    • 引数で与えた文字列を出力する
      • echo 文字列
  • 変数

    • 代入は=、参照は変数名に$をつける
      • abc
    • 配列変数の参照は$の後に{}で囲む
      • ${abc[0]}
  • シェル変数と環境変数

    • シェル変数は実行しているシェルの中でのみ有効
    • 環境変数はそこから実行されたコマンド内でも有効
      • export 変数名
  • read

    • 標準入力からデータを読み込む、変数にデータがある場合は上書き
      • read 変数名
  • シェル変数

    • setシェル変数を一覧表示
    • unset 変数名指定した変数を削除
  • 環境変数

    • env環境変数を一覧表示
    • unset 変数名指定した変数を削除
  • 引用符

    • 囲まれた文字列によって処理が異なる
    • ' $付の変数があった場合、変数は展開されない
    • " $付の変数があった場合、変数は展開される
    • ` $付の変数があった場合、コマンドとして実行された結果が表示される
  • 引数

    • ファイル名 引数
    • 引数は$引数番号で取得可能
    • $0は実行コマンド名
    • $#は引数の数
  • shift文

    • 引数の順番を1つ後ろにずらす
  • エスケープシーケンス

    • 特殊文字の表示や改行ができる文字
    • ダブルクォートを出力する方法
      • ¥"文字列¥"で囲む
      • シングルクォートで囲む
    • ¥は改行文字としても扱われる
    • -eオプションで¥n改行,¥000(8進数)が利用可能
  • sourceコマンド

    • 指定されたファイルを読み込んでシェル環境を設定する
    • 一般的な用途としては、シェルの環境設定ファイルを変更後ログインし直さずに設定を現在のシェル上で有効にする
  • if文

    • if 条件式1 then ... elif 条件式2 else ... fi
    • 判定は以下属性が可能
    • 複数条件
    • case文による分岐も可能
  • for文

  • for 変数 in 値のリスト do 処理 done

  • while/until文 ``` while 条件式  do 処理 done

    until 条件式 do 処理 done ```

  • select文

    • ユーザに数値の入力を促す select 変数 in リスト do 処理 done
  • サブルーチン

    • 一連の処理をまとめて再利用可能にしたもの

    function 関数名{ 処理 } 関数名 { 処理 }

  • return文 return 変数名

  • 実際のシェルスクリプト

    • 起動スクリプト コマンド1 && コマンド2 コマンド1が正常終了した場合、コマンド2を実行 コマンド1 || コマンド2 コマンド1が異常終了した場合、コマンド2を実行 コマンド1 && コマンド2 ... コマンドN || コマンドY コマンド1から正常終了する限り右に進み、異常終了した場合にコマンドYを実行
      • exitの後の終了コードは親プロセスに返すため、リターンコードと呼ばれる
      • 正常終了は0でそれ以外はエラーコード
      • 設置された値は特殊変数「?」に格納され、「$?」で参照する
      • LANG=xxxコマンドの言語設定により出力される言語を指定することで出力結果の処理を統一出来る 165関数のシェル
  • 関数のシェルスクリプト

    • 関数を利用することで呼ばれているプログラムの機能を一括で更新できる
  • デバッグ