Portál AbcLinuxu, 14. května 2025 01:00
#!/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 sort
print_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.