2006年7月 3日

[linux-users:106716] Re: bash サンプル

>> On Mon, 3 Jul 2006 19:15:19 +0900, had doc said:

had>  #foo.sh -f FILE -a AAA -b BBB -c CCC

had> つまり、FILEというファイル(なければ作成する)に
had> コマンド引数で指定されたAAA, BBB, CCCを追加しようと
had> 考えております。処理後FILEのなかは

had>  #cat FILE
had> parameter1="AAA"
had> parameter2="BBB"
had> parameter3="CCC"

本当は何をしたいのかはよくわからないので 十分かは不明なのですが
単純なのならいつも新しく作るようにしてリダイレクトでいいんじゃないですか?


(例)
% echo "parameter1=\"${a:-}\"" >> $f

特定の行を置き換えたりするのは sed や ed や ex や awk や perl などあた
りで.
(例)
% sed -e 's/^parameter1=.*$/parameter1=\"AAAA\"/g'
これはファイルの中身を置き換えるわけではありません.

で 枯木も山の賑わいということでいい加減な例:-)
エラーチェックもすごくて抜きなので 注意すべし.

#!/bin/bash

CMD=`basename $0`
usage () {
echo "Usage $CMD -f outputfile -a param1 -b param2 -c param3"
exit 1 ;
}

set -- `getopt f:a:b:c: $*`
if [ $? != 0 ]; then
usage ;
fi

for i do
case "$i" in
-a)
a=$2; shift; shift;
;;
-b)
b=$2; shift; shift;
;;
-c)
c=$2; shift; shift;
;;
-f)
f=$2; shift; shift;
;;
esac
done

if [ -z "${a:-}" -o -z "${b:-}" -o -z "${c:-}" -o -z "${f:-}" ]; then
echo "error" ;
usage ;
fi

if [ -f ${f} ]; then
sed -i "s/^parameter1=.*\$/parameter1=\"$a\"/" $f
sed -i "s/^parameter2=.*\$/parameter2=\"$b\"/" $f
sed -i "s/^parameter3=.*\$/parameter2=\"$c\"/" $f
else
touc ${f}
echo "parameter1=\"$a\"" >> ${f}
echo "parameter2=\"$b\"" >> ${f}
echo "parameter3=\"$c\"" >> ${f}
fi

exit 0 ;

--
(ishi)


投稿者 xml-rpc : 2006年7月 3日 21:14
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/38866
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。