有时需要反序一个变量的word,比如加载模块和卸载的顺序相反。Bash中可以用数组,但是POSIX不支持数组,此时可以将变量存入positional parameters,然后按编号逆序读取。
1 2 3 4 5 6 7 8 9 10 | unload () { set -- $drivers i=$ # while [ $i -gt 0 ]; do eval "driver=\${$i}" rmmod $driver i=$((i-1)) done } |
set -- 如果不带参数,unset positional parameters,如果带参数,设置positional parameters。
参考
https://unix.stackexchange.com/questions/27382/how-do-i-reverse-a-for-loop