Announce

PukiWiki contents have been moved into SONOTS Plugin (20070703)

05.bnkf

一括 nkf (batch nkf)

投稿者s1080134
作成日2001/07 (学部2年前期)
最終更新日2003/09/09
言語bash
Table of Contents

説明

nkf コマンドで一度に複数ファイルを指定するための CUI フロントエンドです。

書式

使い方は以下のようになっています。

   bnkf: batch nkf. nkf front end.
   Usage: bnkf [nkf options] [file ...]
            ex) bnkf -d -e *.html (euc)
            ex) yes | bnkf -c -s ../*  (sjis)

nkf は本来ファイルを上書きしないのですが、 mv -i コマンドで確認を求めてから上書きするようにしています。確認を求めたらバッチ処理じゃないだろというつっこみは勘弁してください。確認を求められたくない場合は yes コマンドを使ってください。

ソースコード

#!/usr/local/bin/bash
# Copyright (C) Naotoshi Seo, s1080134

function printUsage() {
  cmd=${0##*/}
  echo "Batch nkf. nkf front end." 1>&2
  echo "Usage: $cmd [nkf options] [file ...]" 1>&2
  echo "         ex) $cmd -d -e *.html (euc)" 1>&2
  echo "         ex) yes | $cmd -c -s ../*  (sjis)" 1>&2
}
if [ $# -lt 1 ]; then
  printUsage
  exit 0
fi

#Options
while [ $# -gt 0 ]
  do
  if [ $(expr "x$1" : 'x-') -eq 0 ];then
    break
  fi
  options="$options$1 "
  shift
done
#$@ become [file ... ]

#main
for file in $@
  do
  echo "nkf $options$file > /tmp/tmp ; mv -i /tmp/tmp $file"
  nkf $options$file > /tmp/tmp
  if [ "$?" != "0" ];then
    break
  fi
  mv -i /tmp/tmp $file
done