zsh:
print -r -- ${(Oa)=VAR}
$=VARdzieli $VARsię $IFS. (Oa)porządkuje wynikową listę w odwrotnej kolejności tablicowej. print -r --(jak w ksh), to samo co echo -E -( zshspecyficzne) to niezawodne wersjeecho : wypisuje swoje argumenty, gdy jest oddzielone spacją, zakończone znakiem nowej linii.
Jeśli chcesz podzielić tylko na spację, a nie na to, co $IFSzawiera (spacja, tabulator, nowa linia, domyślnie nul), albo przypisz spację $IFS, albo użyj jawnego podziału, takiego jak:
print -r -- ${(Oas: :)VAR}
Aby sortować w odwrotnej kolejności numerycznej:
$ VAR='50 10 20 90 100 30 60 40 70 80'
$ print -r -- ${(nOn)=VAR}
100 90 80 70 60 50 40 30 20 10
POSIXly (tak też by działał bash):
Z wbudowaną powłoką (z wyjątkiem printfniektórych powłok) tylko mechanizmy (lepsze dla zmiennych o krótkiej wartości):
unset -v IFS # restore IFS to its default value of spc, tab, nl
set -o noglob # disable glob
set -- $VAR # use the split+glob operator to assign the words to $1, $2...
reversed_VAR= sep=
for i do
reversed_VAR=$i$sep$reversed_VAR
sep=' '
done
printf '%s\n' "$reversed_VAR"
Z awk(lepiej dla dużych zmiennych, szczególnie z bash, ale do granicy wielkości argumentów (lub pojedynczego argumentu)):
awk '
BEGIN {
n = split(ARGV[1], a);
while (n) {printf "%s", sep a[n--]; sep = " "}
print ""
}' "$VAR"