ARGH udev не перестанет переименовывать мои интерфейсы!

Если вы в порядке с -h вместо --help, вы также можете использовать getopts, что очень удобно. Код, который вам тогда понадобился (измененный от ответа Эрика Карвалью):

#!/bin/bash

function show_help() {
    cat << ENDHELP
-a you can do stuff like that.
-b you can do stuff like this.
-c this is extremely fancy stuff.
ENDHELP
}

#checks if there are any arguments by (ab)using the short-circuited OR
(( $# )) || echo "No arguments. Run $0 --help"

while getopts 'habc' opt; do
        case "$opt" in
            h)
                show_help
            ;;
            a)
                echo "sudo /path/to/other/script"
            ;;
            b)
                echo "do_some_stuff"
                echo "do_another_stuff"
            ;;
            c)
                echo "do_extremely_fancy_stuff"
                echo "do_another_extremely_fancy_stuff"
                echo "run_as_many_commands_as_you_want"
            ;;
            *)
                echo "Run $0 --help"
            ;;
        esac
done

Теперь вы можете передать несколько параметров вашему shellscript, поэтому, если вы хотите запустить a, b и c, вы можете сделать

./script.bash -a -b -c

или даже

./script.bash -abc

Строка опций 'habc' сообщает вам, какие параметры разрешены, getopts автоматически сообщит вам о неподдерживаемых параметрах. Вы также можете добавить аргументы к параметрам (например, имя других скриптов, которые вы хотите запустить), тогда вам нужно добавить двоеточие (:) за свой параметр, тогда аргумент сохраняется в $OPTARG. Посмотрите на этот (неполный) wikipage, как это сделать.

PS Вы также можете использовать (более старый) getopt (без s), getopt немного сложнее, но позволяет использовать --help.

1
задан 5 June 2015 в 03:29

1 ответ

Добавить в / etc / default / grub:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
Обновить загрузчик:
sudo update-grub
Перезагрузка!
reboot

Проверено на ubuntu 15.10

2
ответ дан 23 May 2018 в 22:55
  • 1
    ОП уже опубликовал ответ в комментарии ... также, принятый ответ уже здесь. – cmks 5 April 2016 в 03:40
  • 2
    вы ошибаетесь, я сделал это, и если вы не установите net.ifnames=0, ядро ​​переименует интерфейсы. Я не знаю, может быть, на другой версии он отличается. – MSS 5 April 2016 в 11:48

Другие вопросы по тегам:

Похожие вопросы: