Bash
Bash - 反轉數組
有沒有一種簡單的方法來反轉數組?
#!/bin/bash array=(1 2 3 4 5 6 7) echo "${array[@]}"
所以我會得到:
7 6 5 4 3 2 1
而不是:
1 2 3 4 5 6 7
另一種非正常的方法:
#!/bin/bash array=(1 2 3 4 5 6 7) f() { array=("${BASH_ARGV[@]}"); } shopt -s extdebug f "${array[@]}" shopt -u extdebug echo "${array[@]}"
輸出:
7 6 5 4 3 2 1
如果
extdebug
啟用,數組BASH_ARGV
在函式中包含所有位置參數的倒序。
非正常的方法(都不是純的
bash
):
- 如果數組中的所有元素都只是一個字元(如問題中),您可以使用
rev
:echo "${array[@]}" | rev
- 除此以外:
printf '%s\n' "${array[@]}" | tac | tr '\n' ' '; echo
- 如果你可以使用
zsh
:echo ${(Oa)array}