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

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

Содержимое скрипта выглядит следующим образом:

#!/bin/bash

sethostname() {
  if [ $# -eq 1 ]
  then
    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
    reboot
  else
    echo "The exapmle of execute the script:  bash InstallmDNS.sh server1"
    echo "This script is executed with one parameter."
    exit 0
  fi
}

dia=`systemctl status avahi-daemon|grep Active`
if [[ "$dia" =~ "running" ]]
then
  echo "mDNS is running"
  sethostname
else
  apt-get install avahi-daemon -y
  echo "mDNS installation complete."
  sethostname
fi

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

root@linux:/home/ankon# bash InstallmDNS.sh
mDNS is running
The exapmle of execute the script:  bash InstallmDNS.sh server1
This script is executed with one parameter.

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

root@linux:/home/ankon# bash InstallmDNS.sh server2
mDNS is running
The exapmle of execute the script:  bash InstallmDNS.sh server1
This script is executed with one parameter.

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

2
задан 12 July 2021 в 10:44

1 ответ

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

4
ответ дан 28 July 2021 в 11:19

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

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