**前提条件 [#b059e763]
何らかの[ListFile]を作成し、頭から順に一行ずつ取得して処理を行うサンプルコード。
WC=`wc -l [ListFile] | awk '{print $1}'`
i=1
while [ $i -le $WC ];
do
NAME=`sed -n -e ${i}"p" $[ListFile]`
[処理]
i=$(($i+1))
done
**処理の流れ [#gf8f7634]
1. wcコマンドにてListFileの行数を取得して変数WCに設定~
2. 変数iに1(=1行目)を設定~
3. while制御構文により変数iと変数WCを比較~
4. do以降でループ処理を設定~
5. NAME=にて変数NAMEに処理該当行の文字列を設定~
*サンプル [#p91c6c75]
**count.sh [#q1c8baa9]
リストを元に該当件数をカウントして出力するスクリプト
-count.sh
#!/bin/sh
# ------------------------
# List count script
# ------------------------
# Version : 1.0
# date : 2023/06/04
export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH
##
## Configuration
##
ListFile=$1
InputFile=$2
OutputFile=$3
##
## Check
##
if [ -z $3 ];then
echo "ERR : Parameters are missing."
echo "./SCRIPT [LIST] [INPUT] OUTPUT"
echo "./SCRIPT [LIST] [INPUT] [OUTPUT]"
exit 1
fi
##
## Execute
##
WC=`wc -l $ListFile | awk '{print $1}'`
i=1
while [ $i -le $WC ];
do
NAME=`sed -n -e ${i}"p" $ListFile`
COUNT=`grep $NAME $InputFile | wc -l`
echo $NAME","$COUNT >> $OutputFile
i=$(($i+1))
done
exit 0
# EOF