Portál AbcLinuxu, 26. prosince 2025 16:26
#!/bin/bash
pole=( 1 10 6 9 10 22 11 34 21 12 2 )
Moc mi to pomuze. Dekuji predem.
#!/bin/bash
POLE=(4 1 8 6 10)
echo "Pole před: ${POLE[@]}"
for ((I=0;I<${#POLE[@]};I++)); do
for ((J=I+1;J<${#POLE[@]};J++)); do
if [ ${POLE[J]} -lt ${POLE[I]} ]; then
TMP=${POLE[J]}
POLE[J]=${POLE[I]}
POLE[I]=$TMP
fi
done
done
echo "Pole po: ${POLE[@]}"
pole=($(sed 's: :\n:g' <<< "${pole[*]}" | sort -n))
IFS=$'\n'
pole=($(echo "${pole[*]}" | sort -n))
IFS=$' \t\n'
IFS=$'\n' pole=($(sort -n <<< "${pole[*]}"))
$ perl -mString::Escape -le '($a = <>) =~ s/$//;print String::Escape::escape("printable", $a)' <<<"$IFS"
\t\n
$ pole=( 1 10 6 9 10 22 11 34 21 12 2 )
$ IFS=$'\n' pole=($(sort -n <<< "${pole[*]}"))
$ perl -mString::Escape -le '($a = <>) =~ s/$//;print String::Escape::escape("printable", $a)' <<<"$IFS"
\n
chomp ($a = <>); bezpečnejšie ?

$ perl -mString::Escape -le '($a = <>) =~ s/$//;print String::Escape::escape("printable", $a)' <<<"$IFS"
\t\n
$ perl -mString::Escape -le 'chomp ($a = <>);print String::Escape::escape("printable", $a)' <<<"$IFS"
\t
\n za sebou a teď už to nedělá. Už nevím čí jsem.
perl -mString::Escape=escape -le 'print escape("printable", scalar <>)' <<<"$IFS"Dnes nemám svůj den. Pointa byla v tom, že se to IFS nevrátí do default podoby.
Pointa byla v tom, že se to IFS nevrátí do default podoby.Aha, to je divný. Dík za warning.
Tohle nejde, promenna IFS zustane nastavena na \n i dal. Jde ale pouzit subshell, treba takto:
a=( $( IFS=$'\n'; echo "${a[*]}" | sort -n ) );
>>> pole="1 10 6 9 10 22 11 34 21 12 2".split() >>> pole_int = [int(x) for x in pole] >>> print sorted(pole_int) [1, 2, 6, 9, 10, 10, 11, 12, 21, 22, 34]Samozřejmě je příjemnější, když pole obsahuje rovnou čísla:
>>> pole = [1, 10, 6, 9, 10, 22, 11, 34, 21, 12, 2] >>> pole.sort() >>> print pole [1, 2, 6, 9, 10, 10, 11, 12, 21, 22, 34]
python user defined sortprint_int
1. http://tldp.org/LDP/abs/html/arrays.html v texte hľadať slovíčko bubble
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.