#!/bin/sh
count=1
while read line
do
found=$( grep M $line )
if [ "$found" ]; then
echo $count")" $line >> filesave.txt
fi
count=$((count+1))
done < log1.txt
しかし、次のエラーが発生しました。
./count.sh ./count.sh: syntax error at line 10: `found=$' unexpected
答え1
問題は引用されていない変数$line
参照です。
found=$( grep M $line )
そして/または
echo $count")" $line >> filesave.txt`
どちらの場合も$line
二重引用符で囲む必要があります。
found=$( grep M "$line" )
echo $count")" "$line" >> filesave.txt`
この例では、次の行をlog1.txt
ファイル名として使用しますが、これはおそらくユーザーが望むものではありません。読み取ったすべての行からlog.txt
文字列を取得するには、M
次のコマンドを使用できます。
found="$( echo "$line" | grep M )"
以降は文字が含まれている場合にのみ同じです$found
。$line
$line
M