Заранее прошу прощение за быдлокодинг, но всё же.
при выводе
$x пишется поверх $y
Тоесть: $x=foo, $y=test
получим на выхлопе foot
Исходники:
#!/bin/bash
for n in $@
do
case $n in
-n|--numeric) numeric=1 ;;
-ip|--ip-sort) ip=1 ;;
*) file=$n ;;
esac
done
echo "-n=$numeric -ip=$ip -t=$test file=$file"
if [ ! -z $file ] && [ -a $file ]; then
# echo "Файл $file существует";
if [ "$ip" = "1" ]; then
users=$(cat $1 | awk -F\| '{ print $3 $4}' | grep -Ev '254.51|administrator' | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n | uniq );
echo $ip
else
users=$(cat $1 | awk -F\| '{ print $4 $3}' | grep -Ev '254.51|administrator' | sort | uniq );
echo $ip
fi
j=1;
for x in ${users}; do
{
if [[ $((j % 2)) = 0 ]]; then
echo $y;
echo "${y} ${x}"; #то самое спорное место
j=$((j+1));
elif [[ $((j % 2)) = 1 ]]; then
y=$x;
j=$((j+1));
fi
}
done;
else
echo "Файл $file не существует";
exit 1
fi
exit 0
Есть подозрение что дело в месте чуть выше:
users=$(cat $1 | awk -F\| '{ print $3 $4}' | grep -Ev '254.51|administrator' | sort | uniq );
Ибо при выполнении с ключом -ip перезаписи строки не наблюдается.
UPD: глюк только на linux Mint, на Dedian всё в норме О_о
bash, echo