사용자로부터 여러 열 번호를 가져와 내용을 반대로 바꾸는 Unix 스크립트를 원합니다.
declare -a param="$@"
# enter 0 when exit the insert element
echo "Enter the numbers"
read n
while [ $n -ne 0 ]
do
x[$i]=`expr $n`
read n
let i++
done
#display the all array elements
echo "Array values ${x[@]}"
echo "Array values ${x[*]}"
# To find the array length
length=${#x[*]}
echo $length
답변1
위의 Gnouc의 매우 유사한 답변과 함께 게시된 Stack Overflow의 매우 유사한 질문에 대한 내 답변을 복사하여 붙여넣습니다.
_arr+=( '"${_arrev} is an actual "${array[@]}"' )
_arr+=( '"${_arrev} is created as a result"' )
_arr+=( '"of reversing the key order in"' )
_arr+=( '"this "${_arr}. It handles zsh and"' )
_arr+=( '"bash arrays intelligently by tracking"' )
_arr+=( '"shell "$ENV." quotes=fine ( i hope ) "' )
. <<REVERSE /dev/stdin ⏎
_arrev=( $(: $((l=${#_arr[@]}${ZSH_VERSION++1})) ; printf '"${_arr[$(('$l'-%d))]}" ' `seq 1 $l`) )
REVERSE
echo ; printf %s\\n ${_arrev}
"shell "$ENV." quotes=fine ( i hope ) "
"bash arrays intelligently by tracking"
"this "${_arr}. It handles zsh and"
"of reversing the key order in"
"${_arrev} is created as a result"
"${_arrev} is an actual "${array[@]}"
나는 이것이 가능한 모든 배열을 처리해야 한다고 생각합니다.
그곳에서 무슨 일이 일어나고 있는지 궁금하다면 꼭 확인해 보시길 권합니다.여기첫 번째. 그럼 아마여기, 정말여기, 그리고 시간이 있으시면여기그리고여기.
이 모든 답변에서 나는 여기 문서의 다양한 측면을 논의합니다.(그리고 다른 많은 측면들)이것을 유리하게 사용할 수 있습니다. 예를 들어, 위에서 수행한 두 가지 평가 변수에 대해 논의하고 그 안에 다음과 같은 다른 변수를 전역적으로 선언하는 함수를 선언했습니다."_$1"
5~6줄만 있고 대부분은 다음과 같습니다._$1() { func body ; }
.올바르게 사용하면 매우 편리합니다.
자동 전환 정보bash
/zsh,
글쎄, 그것은 또 다른 이야기이지만 매우 간단합니다. 바라보다여기.
따라서 기본적으로bash
/zsh,
배열의 경우 3개만 사용하여 이를 되돌릴 수 있어야 합니다. <<...라인을 반전시키세요. 배열을 다음과 같은 방식으로 반복할 필요가 없습니다.for loop
하다.
답변2
내가 올바르게 이해했다면 배열의 내용을 뒤집고 싶습니다. 당신은 이것을 할 수 있습니다 for loop
:
for ((idx=${#x[@]}-1; idx >= 0; idx--))
do
printf '%s ' "${x[idx]}"
done