zsh
:
print -r -- ${(Oa)=VAR}
$=VAR
에 분할 $VAR
합니다 $IFS
. (Oa)
결과 목록을 역순으로 정렬합니다. print -r --
(와 같이 ksh
) echo -E -
( zsh
구체적으로) 와 같은 신뢰할 수있는 버전은echo
다음 과 같습니다. 인수를 공백으로 구분하여 줄 바꿈으로 종료하여 그대로 인쇄합니다.
$IFS
포함 된 공간 (기본적으로 공백, 탭, 줄 바꿈, 널)이 아닌 공백만으로 분할 하려면 공백을에 할당 $IFS
하거나 다음과 같은 명시 적 분할을 사용하십시오.
print -r -- ${(Oas: :)VAR}
역순으로 정렬하려면 :
$ 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 (그래서도 작동합니다 bash
) :
쉘 내장 ( printf
일부 쉘 제외 ) 메커니즘 만 (짧은 값을 가진 변수의 경우) :
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"
와 함께 awk
(더 큰 변수, 특히와 함께 bash
하지만 인수 크기 (또는 단일 인수)의 크기 제한까지) :
awk '
BEGIN {
n = split(ARGV[1], a);
while (n) {printf "%s", sep a[n--]; sep = " "}
print ""
}' "$VAR"