私はシェルスクリプトの初心者です。flat(.txt)ファイルから行数を取得してint変数に割り当てる必要があります。
これを試しても機能しない
FNAME="pn_data_"$month$day$year".txt"
declare -i recordcount=0
for f in $FNAME
do
recordcount+=`wc $f |'{print $1}'`
done
周りの提案をいただければ幸いです。
の秘訣wc
は、コマンドラインでファイル名を指定すると、それが出力に出力されることです。これを回避するには、標準入力をフィードします。シンボルのRHSは奇妙です—アクションの前で|
逃したかもしれませんか?awk
しかし、それはやり過ぎです:あなたは単に書くことができます:
declare -i recordcount
recordcount=$(wc -l < $FNAME)
(そして、私は通常、declare
回線を気にしません。)
ファイルが1つだけで、1つのファイルからのレコード数が必要であると想定していることに注意してください。複数のファイルを処理して集計数を取得する必要がある場合は、シェルで各ファイルを個別に処理してからの値を計算するwc
か、すべてのファイルを実行wc
して合計行数を出力する必要があります。最後に(これは後処理するsed
かawk
、出力の最後の行から数値だけを取得することができます)。
FNAME="pn_data_"$month$day$year".txt"
for f in $FNAME
do
recordcount=$(expr $recordcount + $(wc -l < $f))
done