Как l oop по аргументам оболочки в обратном порядке? - PullRequest
1 голос
/ 30 апреля 2020

Я хочу собрать al oop в моем сценарии оболочки, где я запускаю все аргументы в обратном порядке и использую их в команде. Как это можно сделать?

Мой конкретный c код будет:

#!/bin/sh
for MODULE in "$@"
do
rmmod $MODULE
done
for MODULE in "$@"
do
insmod $MODULE
done
dmesg -c

, но я хочу, чтобы "insmod" во втором for-l oop вызывался с вместо этого аргументы от последнего к первому.

1 Ответ

3 голосов
/ 30 апреля 2020

Если вы нацеливаетесь на обычный sh, а не на bash, тогда у вас не будет никаких функций массива, о которых можно было бы говорить. Вы можете использовать рекурсивную функцию:

#!/bin/sh

resetmods() {
    rmmod "$1"
    [ "$#" -gt 1 ] && (shift; resetmods "$@")
    insmod "$1"
}

resetmods "$@"
dmesg -c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...