Есть скрипт,в котором есть файл для определения оперативной памяти.
dmidecode -t memory |awk '/Device/{i++;print "Device "i}/\tSpeed|\tSize|\tForm/' |egrep --color=always "No|Module|Installed|$ " >> 2.sh
echo dmidecode -t memory |awk '/Device/{i++;print "Device "i}/\tSpeed|\tSize|\tForm/' |egrep --color=always "No|Module|Installed|$"
Вывод выглядит следующим образом :
Device 1
Device 2
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 3
Size: 32 GB
Form Factor: DIMM
Speed: 2933 MT/s
Device 4
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 5
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 6
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 7
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 8
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 9
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 10
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 11
Size: 32 GB
Form Factor: DIMM
Speed: 2933 MT/s
Device 12
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 13
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 14
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 15
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 16
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
Device 17
Size: No Module Installed
Form Factor: DIMM
Speed: Unknown
записанный в файле 1.sh, перенаправляющий вывод в 2.sh
Хочу написать цикл, который бы считал количество строк содержащих 32 GB, 2933 MT/s
и в конце, если количество таких строк =8 , то внизу была бы надпись TEST OK
иначе TEST NOT OK
есть 3 проблемы
1. Перезаписывая файл 2, что бы греповать вывод приходится перенаправлять вывод в еще один файл, греповать уже внутри него.
Не знаю как сделать так, что бы перезаписывалась определенная часть файла (условно - перед строкой grep -w "32\|2933")
2. Не знаю как правильно написать цикл из этого вывода,
что бы он считал строки в которых есть 32 и 2933 и
выводил результат TEST OK/NOT OK.
3. Понимаю, что Девайс 1 - system memory ( system Boar or motherboard) Массив физической памяти, находится на шине 0х0016(Intel C620 Series Chipset Family MEI Controller), остальные (DIMM) на 17-26 шине. Но он искажает данные,
как убрать его из списка вывода- не знаю.
Пока навыков не хватает.....