Как и другие говорили, вы не можете этого сделать.
Но если вы хотите расположить код в одном файле так, чтобы основная программа находилась вверху файла, а другие функции были определены ниже, вы можете сделать это с помощью отдельной функции main
.
.
#!/bin/sh
main() {
if [ "$1" = yes ]; then
do_task_this
else
do_task_that
fi
}
do_task_this() {
...
}
do_task_that() {
...
}
main "$@"; exit
Когда мы вызываем main
в конце файла, все функции уже определены. Явная передача "$@"
в main
необходима, чтобы сделать аргументы командной строки скрипта видимыми в функции.
Явное выражение exit
в той же строке, что и вызов main, не является обязательным, но может использоваться для предотвращения сбоев в работающем скрипте при изменении файла скрипта. Без него оболочка попытается продолжить чтение команд из файла сценария после возврата main
. (см. Как прочитать весь сценарий оболочки перед его выполнением?)
Now, I want to install/build the new kernel from the upstream source, what should I do to also have the kernel source be installed as kernel-ml-devel-4.14.15-1.el7.elrepo.x86_64.rpm did?
Если вы хотите пересобрать ядро с нуля, вашей точкой входа будут исходники:-)
Итак, просто скачайте ядро с kernel.org, распакуйте его в /usr/src
и следуйте инструкциям. kernel-devel
RPM должен уметь определять путь к вашим источникам.
Если нет, и в зависимости от драйвера, который вы хотите скомпилировать, есть несколько способов перекомпилировать его самостоятельно. Первое, что нужно посмотреть, это документацию вашего драйвера...
Вот — хорошая статья об этом.