シェルスクリプトに問題があります。インデックス、日付、time1(間隔の開始)、time2(間隔の終わり)パラメータを読み取る必要があります。 time1-time2時間間隔内に特定の日付にユーザー(インデックス)がログインした回数を数える必要があります。
例: 121212 "1月14日" 00 12
これは機能しますが、パラメータの日付に問題があります。パラメータとして扱いません。 Janと14"に分かれていますが、これは大きな問題です。数時間インターネットを検索しましたが、どこにも解決策が見つかりませんでした。私のコードは次のとおりです。
#!/bin/bash
read user date time1 time2
list=`last | grep ^$user.*$date | awk '{ print $7 }'`
start=$time1
end=$time2
echo "start $start"
echo "end $end"
count=0
for el in $list ;
do
login=$el
echo "najava $najava"
checkIf(){
current=$login
[[ ($start = $current || $start < $current) && ($current = $end || $current < $end) ]]
}
if checkIf; then
count=`expr $count + 1`
ip=`last | grep ^$user.*$date.*$login | awk '{ print $3 }'`
echo $ip >> address.txt
else
continue
fi
done
echo "The user has logged in $count times in the given time interval"
ベストアンサー1
$ 1、$ 2、$ 3、$ 4、...をコマンドライン引数として使用してみてください(読み取りではなく)。
次のコマンドを使用してスクリプトを呼び出します。
./script.sh 121212 "Jan 14" 00 12