シェルスクリプトによるファイル編集に伴うコマンド群
毎度毎度調べながらじゃないとできなくてうんざりしたので。
- 引数の数を知る
$#
- 第1引数、第2引数、、、
$1, $2, ...
- 全引数
$*, $@
- ファイル/ディレクトリの存在を確認
[ -f ${FILE_NAME} ] && mv ${FILE_NAME} ${FILE_NAME}_old
[ -d ${APPLOG_DIR} ] && echo "Directory exists."
- オプションを取得して、対応を記述する構文
while getopts dnfrl OPTION
do
case ${OPTION} in
a)
...
b)
...
...
esac
doneshift `expr $OPTIND - 1`
下部は引数を前詰めしている
- コマンドの結果を変数に渡す
CURRENT_DIR = `pwd`
- リストを対象としたfor構文
PRIME_NUM_LIST="2 3 5 7 11 13 17 19"
for pn in ${PRIME_NUM_LIST}
do
echo $pn
done
- ファイルの任意の行を削除
sed -e ${LINE_NUMBER}d ${FILE_NAME}
- ファイルの任意の行に追加
sed -e '${LINE_NUMBER}i ${CONTENTS}' ${FILE_NAME}
- ファイルの内のある文字列が(最初に)現れた行数を返す
INSERT_NUMBER=`grep -n ${SEARCH_STRING} ${SEARCH_FILE} | sed -e 's/:.*//g' | head -n 1`
- 変数内のある文字列を置換する変換
${HOGE//${foo}/${bar}}
${HOGE}に含まれる${foo}を${bar}に変換
- リストを読み、変数に代入する
grep '^LIST_FLAG' ${INPUT_FILE}/$0 | while read v1 v2 v3 v4
do
echo $v2
echo $v4
done
例としては以下
(${INPUT_FILE内})
...
LIST_FLAG HOGE01 FOO01 BAR01
LIST_FLAG HOGE02 FOO02 BAR02
...
(出力例)
...
HOGE01
BAR01
HOGE02
BAR02
...