Буквы дисков нужно задать в операторе for in a b (ниже будет скрипт который сам выберет все диски)
# for idx in a b ; do smartctl -A /dev/sd$idx | sed -n '/^ID#/,/^$/p' | sed -e '/^ID#/d;s/^./'"$idx "'&/g'; done | sed -e '/^[ \t]*$/d' | awk '{disks[$1]=$1;keys[$3]=$2$3;valuelen=length($11);keylen=length($3);if(valuelen>maxvaluelen){maxvaluelen=valuelen}if(keylen>maxkeylen){maxkeylen=keylen};VALUES[$1,$3]=$11}END{printf("\n%-"maxkeylen"s","NAME");for(disk in disks){printf(" %"maxvaluelen"s",toupper("SD"disk))};for(key in keys){printf("\n%-"maxkeylen"s",key); for(disk in disks){printf(" %"maxvaluelen"s", VALUES[disk,key])}};printf("\n")}' NAME SDA SDB Spin_Retry_Count 0 0 Seek_Error_Rate 0 0 Start_Stop_Count 101 21 Multi_Zone_Error_Rate 0 0 Offline_Uncorrectable 0 0 Spin_Up_Time 9216 10183 Power_Cycle_Count 95 12 Calibration_Retry_Count 0 0 Load_Cycle_Count 199966 111455 Reallocated_Sector_Ct 0 0 Raw_Read_Error_Rate 3 0 Current_Pending_Sector 0 0 Reallocated_Event_Count 0 0 Power_On_Hours 9259 11992 Temperature_Celsius 27 23 UDMA_CRC_Error_Count 0 0 Power-Off_Retract_Count 33 7
Одним движением руки этот скрипт преобразуется в вывод информации, например по 8-ми дискам в RAID контроллере 3ware.
for idx in `seq 0 7` ; do smartctl -A /dev/twa0 -d 3ware,$idx | sed -n '/^ID#/,/^$/p' | sed -e '/^ID#/d;s/^./'"$idx "'&/g'; done | sed -e '/^[ \t]*$/d' | awk '{disks[$1]=$1;keys[$3]=$2$3;valuelen=length($11);keylen=length($3);if(valuelen>maxvaluelen){maxvaluelen=valuelen}if(keylen>maxkeylen){maxkeylen=keylen};VALUES[$1,$3]=$11}END{printf("\n%-"maxkeylen"s","NAME");for(disk in disks){printf(" %"maxvaluelen"s",toupper("p:"disk))};for(key in keys){printf("\n%-"maxkeylen"s",key); for(disk in disks){printf(" %"maxvaluelen"s", VALUES[disk,key])}};printf("\n")}'
А такой скрипт сам выберет все диски с помощью lsblk и выведет состояние smart
while read NAME ; do smartctl -A "${NAME}" | sed -n '/^ID#/,/^$/p' | sed -e '/^ID#/d' -e 's|^.|'"${NAME} "'&|g'; done < <(lsblk -d --noheadings --output name,type | awk '$2=="disk"{print "/dev/"$1}' | sort) | sed -e '/^[ \t]*$/d' | awk '{disks[$1]=$1;keys[$3]=$2$3;valuelen=length($11);keylen=length($3);if(valuelen>maxvaluelen){maxvaluelen=valuelen};if(keylen>maxkeylen){maxkeylen=keylen};VALUES[$1,$3]=$11}END{printf("\n%-"maxkeylen"s","NAME");for(disk in disks){valuelen=length(disk);if(valuelen>maxvaluelen){maxvaluelen=valuelen}};for(disk in disks){printf(" %"maxvaluelen"s",disk)};for(key in keys){printf("\n%-"maxkeylen"s",key); for(disk in disks){printf(" %"maxvaluelen"s", VALUES[disk,key])}};printf("\n")}'