我想要一个脚本,它将从用户那里获取多个列号并反转内容

我想要一个脚本,它将从用户那里获取多个列号并反转内容

我想要一个 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

相关内容