#!/usr/bin/env bash function RAM(){ local OUT_FILE=$1 # Read RAM information ram_info=$(sudo dmidecode -t memory) # Get memory type ram_type=$(echo "$ram_info" | awk -F': ' '/^[[:space:]]*Type:/ && $2 !~ /Unknown/ {print $2; exit}') # Get module sizes modules=$(echo "$ram_info" | awk ' /^[[:space:]]*Size:/ { if ($0 !~ /No Module Installed/ && $2 ~ /^[0-9]+$/) print $2 } ') # Count empty slots empty_slots=$(echo "$ram_info" | awk ' /^[[:space:]]*Size:/ { if ($0 ~ /No Module Installed/) count++ } END { print count+0 } ') # Calculate total RAM and format modules total=0 sizes="" for size in $modules; do total=$((total + size)) if [ -z "$sizes" ]; then sizes="${size} GB" else sizes="${sizes} + ${size} GB" fi done # Output if [ -z "$modules" ]; then echo -e "RAM: No modules detected - ${empty_slots} empty slots ${ram_type}" >>"$OUT_FILE" else echo -e "RAM: ${total} GB - ${sizes} ${ram_type} - ${empty_slots} empty slots" >>"$OUT_FILE" fi }