Kod: Markera allt
#! /bin/bash
#
echo
#
echo "Devices:"
echo "========"
echo "=> lspci | grep -i vga"
lspci | grep -i vga
echo "=> lspci | grep -i audio"
lspci | grep -i audio
echo
#
echo "Units:"
echo "======"
echo "=> aplay -l"
aplay -l
echo
#
echo "Codec:"
echo "======"
echo "=> cat /proc/asound/card0/codec#* | grep Codec"
cat /proc/asound/card0/codec#* | grep Codec
echo
#
echo "Checking plughw:"
echo "================"
cards=($(aplay -l | grep -i card | sed 's/://g' | \
awk -F: '{ print $1 }' | awk '{ print $2 }'))
if [[ -z $cards ]]; then
cards=($(aplay -l | grep -i kort | sed 's/://g' | \
awk -F: '{ print $1 }' | awk '{ print $2 }'))
fi
units=($(aplay -l | grep -i unit | sed 's/://g' | \
awk -F, '{ print $2 }' | \
awk -F: '{ print $1 }' | awk '{ print $2 }'))
if [[ -z $units ]]; then
units=($(aplay -l | grep -i enhet | sed 's/://g' | \
awk -F, '{ print $2 }' | \
awk -F: '{ print $1 }' | awk '{ print $2 }'))
fi
nunits=${#units[*]}
declare -a plughw=${units[1]}
for ((ix=0;ix<nunits;ix++)); do
plughw[$ix]=${cards[$ix]}","${units[$ix]}
done
for ((ix=0;ix<nunits;ix++)); do
cmd="aplay -D plughw:${plughw[ix]} /usr/share/sounds/alsa/Front_Center.wav"
#echo "=> "$cmd
echo " Testing plughw:${plughw[ix]}"
out=$($cmd 2>&1)
if [[ $? == 0 ]]; then
echo " OK"
else
echo " Fail"
echo " "$out
fi
done

[EDIT igen] Visst skulle man kunna göra det lite "snyggare" med $LANG och en "case", men det blir i slutänden ändå det uttryck som ger en träff som är mest relevant...
