zsh
:
print -r -- ${(Oa)=VAR}
$=VAR
böler $VAR
üzerinde $IFS
. (Oa)
sonuç listesini ters dizi sırasıyla sıralar. print -r --
(gibi ksh
), echo -E -
( zsh
spesifik) ile aynı güvenilir sürümdürecho
: bağımsız değişkenlerini boşlukla ayrılmış, satırsonu ile sonlandırılır.
Yalnızca uzayda bölmek istiyorsanız ve $IFS
(boşluk, sekme, yeni satır, varsayılan olarak nul) içeren öğelere değil, ya alan atayın ya $IFS
da aşağıdaki gibi açık bir bölme kullanın:
print -r -- ${(Oas: :)VAR}
Ters sayısal sırada sıralamak için:
$ 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 (böylece de çalışır bash
):
Kabuk yerleşik (yalnızca printf
bazı kabuklar hariç ) mekanizmalarıyla (kısa değerli değişkenler için daha iyi):
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"
İle awk
(büyük değişkenler için daha iyi, özellikle bash
, ancak bağımsız değişkenlerin (veya tek bir bağımsız değişkenin) boyutunun sınırına kadar):
awk '
BEGIN {
n = split(ARGV[1], a);
while (n) {printf "%s", sep a[n--]; sep = " "}
print ""
}' "$VAR"