пытаюсь в массив получить список заблокированных пользователей таким образом:
a=0
declare -a m
cat /etc/shadow | awk -F: '{ print $1 " " $2; }' | while read user passw; do
if [[ ${passw:0:1} == "!" ]]; then
m[$a]=$user
let "a += 1"
fi
done
echo ${m[0]}
получается, что внутри цикла в массиве значения в массив присваиваются (проверял вставляя там вывод на экран), а за пределами цикла массив уже пустой...
может быть есть какой-нить другой способ получить заблокированных пользователей ? подскажите плиз...
старый башевский прикол, что если делаешь cat | while read ... do .. variable=... done ; то выходя из цикла своя область видимости, и внутрицикловые переменные теряются. надо делать так: while read ... do .. variable=... done < /etc/shadow
В данном примере достаточно добавить в начало 'shopt -s lastpipe'.
А вообще-то трудно придумать, как употребить такое количество ненужного для
такой простой задачи.