Я новичок в скрипте Баха.Ниже приведен код, который я использовал для поиска имени, введенного через командную строку, и поиска введенной строки в outputLog.txt. Если найдено, обновите текущее системное время этой строки имени.
В командной строке
[root@localhost desktop] # ./myscript.sh name1
Logone2.txt
name1 = Tue Jan 20 14:00 19 IST 2012
name2 =Tue Jan 20 14:05 19 IST 2012
name3 = Tue Jan 20 14:20 19 IST 2012
name4 =Tue Jan 20 14:45 19 IST 2012
Моя проблема заключается в том, что, когда я пытаюсь ввести name1, оно обновляется с использованием текущего системного времени и добавляется как последняя запись.
Eg:Logone2.txt
name1 = Tue Feb 20 14:00 19 IST 2012
name2 =Tue Jan 20 14:05 19 IST 2012
name3 = Tue Jan 20 14:20 19 IST 2012
name4 =Tue Jan 20 14:45 19 IST 2012
name1 = Tue Feb 20 14:00 19 IST 2012 (appended entry)
Я хочу добавить строку с текущим системным временем, только если она не найдена в Logone2.txt. Если строка (имя1), введенная с помощью командной строки, найдена в Logone2.txt, обновите имя с текущимсистемное время следующим образом.
Eg:Logone2.txt
name1 = Tue Feb 20 14:00 19 IST 2012
name2 =Tue Jan 20 14:05 19 IST 2012
name3 = Tue Jan 20 14:20 19 IST 2012
name4 =Tue Jan 20 14:45 19 IST 2012
Вот код, который я использую
#!/bin/bash
echo "${1} $(date)" >> /root/Desktop/scripts/Logone2.txt
fgrep "${1}" /root/Desktop/scripts/Logone2.txt && \
sed -i "/${1}/ s/.*/${1} = $(date)/" /root/Desktop/scripts/Logone2.txt || \
echo "${1} $(date)" >> /root/Desktop/scripts/Logone2.txt