NIKKI

勉強します。

Linux6

fjord boot camp

新しいLinuxの教科書 | 三宅 英明, 大角 祐介 |本 | 通販 | Amazonを読む。 シェルスクリプト編。

Internal Filed Separator

  • 内部フィールド区切り文字という環境変数bashが区切り文字として解釈する文字が格納されている。
    • デフォルト値はスペース(sp)、タブ(ht)、改行(nl)の3つ。()は文字コード
    • IFS=$'\n'で改行のみに指定、とか出来る。
    • シェル内でIFSをバックアップして処理完了後にバックアップに戻す
    • コマンド置換やリダイレクトでlsを利用する際は-lオプションが自動的につく。
_IFS=$IFS #元のIFSのバックアップ
IFS=$'\n' #IFSを改行のみに設定
処理
IFS=$_IFS # IFSを元に戻す

xargs

  • 複数ファイルに対して一括処理をするために使われる。
  • findとセットでよく使われる。
  • 引数リストの中身を標準入力としてxargsコマンドに渡す。
# 使用例
$ grep abc file1.txt file2.txt
file1.txt:abc def
file2.txt:ghi abc

$ find . -type f | xargs grep def
./dir1/file3.txt:xxx abc
./dir2/file4.txt:abc yyy

ヒアドキュメント

# 記載方法
コマンド << 終了文字列
    ヒアドキュメント内容
終了文字列

# 例
usage()
{
    local script_name=$(basename "$0")
    cat << END
Usage:  $script_name PATTERN [PATH] [NAME_PATTERN]
Find file in current directory recursively, and ~
END
}
if [ "$#" -eq 0 ]; then
    usage
    exit 1
fi
  • シェル関数usageコマンドライン引数が何もない時にヘルプを表示させる
  • ヘルプを表示させた後にスクリプトを終了させる為に1を入れる

エラーメッセージ

  • エラーごとに終了ステータスを値を変える
  • 1>&2標準出力(1)の出力先を標準エラー出力(2)に変える