Рейтинг:2

При выполнении сценария оболочки bash в Ubuntu 18.04 параметр местоположения не работает, как я могу решить эту проблему?

флаг fo

Имя скрипта InstallmDNS.sh

Содержание скрипта следующее:

#!/бин/баш

sethostname () {
  если [ $# -eq 1 ]
  тогда
    hostnamectl set-hostname "$1"
    sed -i "/127.0.1.1/d" /etc/hosts
    sed -i "/127.0.0.1/a\127.0.1.1 $1" /etc/hosts
    перезагрузка
  еще
    echo "Пример выполнения скрипта: bash InstallmDNS.sh server1"
    echo "Этот скрипт выполняется с одним параметром."
    выход 0
  фи
}

dia=`systemctl status avahi-daemon|grep Active`
если [[ "$dia" =~ "работает" ]]
тогда
  эхо "mDNS работает"
  sethostname
еще
  apt-get установить avahi-daemon -y
  echo "Установка mDNS завершена."
  sethostname
фи

Я запускаю скрипт:

root@linux:/home/ankon# bash InstallmDNS.sh
mDNS работает
Пример выполнения скрипта: bash InstallmDNS.sh server1
Этот скрипт выполняется с одним параметром.

Запускаю скрипт с параметрами:

root@linux:/home/ankon# bash InstallmDNS.sh server2
mDNS работает
Пример выполнения скрипта: bash InstallmDNS.sh server1
Этот скрипт выполняется с одним параметром.

Я добавил параметры и запустил скрипт, но параметры ничего не сделали, в чем причина? Как я могу это исправить?

Рейтинг:4
флаг us

$# в вашей функции содержится количество аргументов, переданных функции, а не всему сценарию. Вы могли бы выполнить sethostname "$@" чтобы передать все аргументы скрипта в функцию, тогда подсчет аргументов будет работать так, как вы ожидали.

Andrew avatar
флаг fo
Большое спасибо!
флаг us
Добро пожаловать :) Если это работает для вас - отметьте ответ как принятый, чтобы другие люди увидели, что он решает проблему.

Ответить или комментировать

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