我想要一个 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 的极其相似的答案一起发布......
_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 来反转它。 <<...反转线。它不需要以 a 的方式循环数组for loop
做。
答案2
如果我理解正确的话,你想反转数组的内容。你可以这样做for loop
:
for ((idx=${#x[@]}-1; idx >= 0; idx--))
do
printf '%s ' "${x[idx]}"
done