Как при написании скрипта bash он узнает, какое использование ()вызывать?

Если решение bcmwl-kernel-sourceвам не помогло, и вы хотите оставить включенной безопасную загрузку, попробуйте следующее:

Создать набор ключей для подписи:

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive common name/"

Импортируйте ключ. Здесь вам будет предложено ввести пароль, который вам нужно запомнить. Ваш BIOS должен запросить пароль после перезагрузки.

sudo mokutil --import MOK.der

Перезапуск:

reboot

BIOS должен был запросить пароль. Предполагая, что это сработало, вы захотите проверить, успешно ли зарегистрирован ваш MOK.

mokutil --test-key MOK.der

Ваш MOK зарегистрирован. Вам нужно будет установить драйверы для вашего Wi-Fi.

git clone https://github.com/lwfinger/rtlwifi_new.git
cd rtlwifi_new
git checkout extended
sudo make install

Ваши драйверы доступны для добавления в ядро, но перед добавлением их необходимо подписать, поскольку у вас включена безопасная загрузка. Поэтому используйте сгенерированные ранее ключи для подписи драйверов.

sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n rtlwifi)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n rtl_pci)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n btcoexist)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n rtl8723-common)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n phydm_mod)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n rtl8723de)

Наконец, добавьте драйверы rtl8723deв ядро ​​в следующем порядке

sudo modprobe -r rtlwifi
sudo modprobe rtlwifi
sudo modprobe -r rtl_pci
sudo modprobe rtl_pci
sudo modprobe -r btcoexist
sudo modprobe btcoexist
sudo modprobe -r rtl8723-common
sudo modprobe rtl8723-common
sudo modprobe -r phydm_mod
sudo modprobe phydm_mod
sudo modprobe -r rtl8723de
sudo modprobe rtl8723de

В примечании :для последнего шага вы можете просто написать:

sudo modprobe -r rtl8723de
sudo modprobe rtl8723de

modprobeзнает, от каких драйверов зависит rtl8723de, и поэтому должен иметь возможность добавлять все, от чего зависит rtl8723de, вместе с rtl8723de. Однако я не добавлял свои драйверы таким образом, поэтому не могу гарантировать, что эта опция будет работать.


Источники:1 , 2 , 3

1
20.10.2021, 15:17
2 ответа

Ответ на ваш вопрос в его нынешнем виде заключается в том, что Bash вызывает последнюю определенную версию функции.

Использование двух модифицированных версий вашего примера:

function1.sh

usage () { echo "Usage from function1.sh - No arguments are needed"; }

myfunction1 () {
  if [[ $# -gt 0 ]] ;
  then
    usage
  fi

  echo "Hello World"
}

function2.sh

usage () { echo "Usage from function2.sh - No arguments are needed"; }

myfunction2 () {
  if [[ $# -gt 0 ]] ;
  then
    usage
  fi

  echo "Hello World"
}

Затем работает

$ source function1.sh
$ source function2.sh
$ usage

даст результат

Usage from function2.sh - No arguments are needed

Обратите внимание, что в вашем скрипте:

  • -qtдолжно быть -gt, и;
  • некоторые пробелы отсутствовали вusage()-вокругecho
2
20.10.2021, 15:48

Я не хочу лишать плаката надо мной правильного ответа, так как он прямо ответил на мой вопрос.

Тем не менее, я хочу опубликовать продолжение.

Вместо источника функции я добавил каталог, в котором находится function.sh, в PATH и переименовал файл в myfunction. В самой последней строке файла myfunction myfunction $@.

0
20.10.2021, 16:55

Теги

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