Синтаксическая ошибка в Bash-скрипте
Код:
case $global in
Пишу под Ubuntu
Вот весь код:
Код:
#!/bin/bash
echo "1. Бекапим файлик"
echo "2. Создаем новый"
echo "3. Вносим настройки интернета"
echo
read global;
case $global in
1)
echo
cp -i -p /etc/network/interfaces /home/vahminator # Бекапим файл в папку профиля
echo
ls -l
;;
2)
echo
echo Ну что, создадим новый файл с настройками??
sudo touch interfaces
echo
echo Все создано!!
ls -l
;;
3)
echo
echo Динамичесий
echo Статический
echo Вторичный сетевой интерфейс
echo
read network_setting
case $network_setting in
1)
sudo /etc/init.d/networking restart #Рестарт системы и настройки DHCP появятся автоматически
2)
sudo chmod 777 * /etc/network/interfaces # Ставим права на запись
cat /dev/null > /etc/network/interfaces #Чистим файл от мусора
# Далее тупо записываем новое содержимое в interfaces с переменными
echo "# This file describes the network interfaces available on your system" >> /etc/network/interfaces
echo "# and how to activate them. For more information, see interfaces(5). " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The loopback network interface" >> /etc/network/interfaces
echo "auto lo" >> /etc/network/interfaces
echo "iface lo inet loopback " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The primary network interface " >> /etc/network/interfaces
echo "auto eth$eth_number " >> /etc/network/interfaces
echo "iface eth$eth_number inet static " >> /etc/network/interfaces
echo " address $address " >> /etc/network/interfaces
echo " netmask $netmask" >> /etc/network/interfaces
echo " network $network" >> /etc/network/interfaces
echo " broadcast $broadcast" >> /etc/network/interfaces
echo " gateway $gateway" >> /etc/network/interfaces
echo " dns-nameservers $dns " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The secondary network interface" >> /etc/network/interfaces
echo "auto eth$eth_number_two" >> /etc/network/interfaces
echo "iface eth$eth_number_two inet static" >> /etc/network/interfaces
echo " address $ip_address" >> /etc/network/interfaces
echo " netmask $net_mask" >> /etc/network/interfaces
echo
#******************************** Вводим значения в переменные ************************************
echo Введите данные:
read eth_number
read address
read netmask
read network
read broadcast
read gateway
read dns
echo $eth_number $address $netmask $network $broadcast $gateway $dns >> /etc/network/interfaces
echo
echo Показать настройки?
echo 1- Да
echo 2- НЕт
echo
read confirmation
case $confirmation in
1)
nano inet
;;
2)
exit
;;
esac
3)
echo Введите данные:
echo
echo Номер сетевого интерфейса:
read eth_number_two
echo IP адрес:
read ip_address
echo Маска:
read net_mask
echo $eth_number_two $ip_address $net_mask >> /etc/network/interfaces
echo
;;
esac
;;
esac
echo "1. Бекапим файлик"
echo "2. Создаем новый"
echo "3. Вносим настройки интернета"
echo
read global;
case $global in
1)
echo
cp -i -p /etc/network/interfaces /home/vahminator # Бекапим файл в папку профиля
echo
ls -l
;;
2)
echo
echo Ну что, создадим новый файл с настройками??
sudo touch interfaces
echo
echo Все создано!!
ls -l
;;
3)
echo
echo Динамичесий
echo Статический
echo Вторичный сетевой интерфейс
echo
read network_setting
case $network_setting in
1)
sudo /etc/init.d/networking restart #Рестарт системы и настройки DHCP появятся автоматически
2)
sudo chmod 777 * /etc/network/interfaces # Ставим права на запись
cat /dev/null > /etc/network/interfaces #Чистим файл от мусора
# Далее тупо записываем новое содержимое в interfaces с переменными
echo "# This file describes the network interfaces available on your system" >> /etc/network/interfaces
echo "# and how to activate them. For more information, see interfaces(5). " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The loopback network interface" >> /etc/network/interfaces
echo "auto lo" >> /etc/network/interfaces
echo "iface lo inet loopback " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The primary network interface " >> /etc/network/interfaces
echo "auto eth$eth_number " >> /etc/network/interfaces
echo "iface eth$eth_number inet static " >> /etc/network/interfaces
echo " address $address " >> /etc/network/interfaces
echo " netmask $netmask" >> /etc/network/interfaces
echo " network $network" >> /etc/network/interfaces
echo " broadcast $broadcast" >> /etc/network/interfaces
echo " gateway $gateway" >> /etc/network/interfaces
echo " dns-nameservers $dns " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The secondary network interface" >> /etc/network/interfaces
echo "auto eth$eth_number_two" >> /etc/network/interfaces
echo "iface eth$eth_number_two inet static" >> /etc/network/interfaces
echo " address $ip_address" >> /etc/network/interfaces
echo " netmask $net_mask" >> /etc/network/interfaces
echo
#******************************** Вводим значения в переменные ************************************
echo Введите данные:
read eth_number
read address
read netmask
read network
read broadcast
read gateway
read dns
echo $eth_number $address $netmask $network $broadcast $gateway $dns >> /etc/network/interfaces
echo
echo Показать настройки?
echo 1- Да
echo 2- НЕт
echo
read confirmation
case $confirmation in
1)
nano inet
;;
2)
exit
;;
esac
3)
echo Введите данные:
echo
echo Номер сетевого интерфейса:
read eth_number_two
echo IP адрес:
read ip_address
echo Маска:
read net_mask
echo $eth_number_two $ip_address $net_mask >> /etc/network/interfaces
echo
;;
esac
;;
esac
Код:
case $network_setting in
1)
sudo /etc/init.d/networking restart #Рестарт системы и настройки DHCP появятся автоматически
# вот тут забыл ;;
2)
# аналогично и для второго вариант case
1)
sudo /etc/init.d/networking restart #Рестарт системы и настройки DHCP появятся автоматически
# вот тут забыл ;;
2)
# аналогично и для второго вариант case
Цитата: Romik
в case каждый блок должен завершаться строкой с ;;
Код:
case $network_setting in
1)
sudo /etc/init.d/networking restart #Рестарт системы и настройки DHCP появятся автоматически
# вот тут забыл ;;
2)
# аналогично и для второго вариант case
1)
sudo /etc/init.d/networking restart #Рестарт системы и настройки DHCP появятся автоматически
# вот тут забыл ;;
2)
# аналогично и для второго вариант case
Спасибо!! Все должно работать.. а вот ща начало ругаться на:
Код:
#!/bin/bash
Хотя я все проверил - все правильно...
Убедись, есть права на исполнения для твоего пользователя у /bin/bash
Цитата: Romik
Скорее всего с этой строкой что-то не так - либо лишние пробелы вначале/середине, либо в конце строки добавлено ещё что-то.
Убедись, есть права на исполнения для твоего пользователя у /bin/bash
Убедись, есть права на исполнения для твоего пользователя у /bin/bash
Добавил права на исполнение + полный доступ (777) - всеравно ругаеться((
Как именно ругается? Было бы хорошо увидеть первые 3 строки скрипта, в том числе и пустые. А лучше выложить его полностью (с отступами)
Код:
#!/bin/bash
echo "1. Бекапим файлик"
echo "2. Создаем новый"
echo "3. Вносим настройки интернета"
echo
read bla;
case $bla in
1)
echo
# Бекапим файл в папку профиля
cp -i -p /etc/network/interfaces /home/vahminator
echo
ls -l
;;
2)
echo
echo Ну что, создадим новый файл с настройками??
sudo touch interfaces
echo
echo Все создано!!
ls -l
;;
3)
echo
echo Динамичесий
echo Статический
echo Вторичный сетевой интерфейс
echo
read network_setting
case $network_setting in
1)
sudo /etc/init.d/networking restart #Рестарт системы и настройки DHCP появятся автоматически
2)
sudo chmod 777 * /etc/network/interfaces # Ставим права на запись
cat /dev/null > /etc/network/interfaces #Чистим файл от мусора
# Далее тупо записываем новое содержимое в interfaces с переменными
echo "# This file describes the network interfaces available on your system" >> /etc/network/interfaces
echo "# and how to activate them. For more information, see interfaces(5). " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The loopback network interface" >> /etc/network/interfaces
echo "auto lo" >> /etc/network/interfaces
echo "iface lo inet loopback " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The primary network interface " >> /etc/network/interfaces
echo "auto eth$eth_number " >> /etc/network/interfaces
echo "iface eth$eth_number inet static " >> /etc/network/interfaces
echo " address $address " >> /etc/network/interfaces
echo " netmask $netmask" >> /etc/network/interfaces
echo " network $network" >> /etc/network/interfaces
echo " broadcast $broadcast" >> /etc/network/interfaces
echo " gateway $gateway" >> /etc/network/interfaces
echo " dns-nameservers $dns " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The secondary network interface" >> /etc/network/interfaces
echo "auto eth$eth_number_two" >> /etc/network/interfaces
echo "iface eth$eth_number_two inet static" >> /etc/network/interfaces
echo " address $ip_address" >> /etc/network/interfaces
echo " netmask $net_mask" >> /etc/network/interfaces
echo
#******************************** Вводим значения в переменные ************************************
echo Введите данные:
read eth_number
read address
read netmask
read network
read broadcast
read gateway
read dns
echo $eth_number $address $netmask $network $broadcast $gateway $dns >> /etc/network/interfaces
echo
echo Показать настройки?
echo 1- Да
echo 2- НЕт
echo
read confirmation
case $confirmation in
1)
nano inet
;;
2)
exit
;;
esac
3)
echo Введите данные:
echo
echo Номер сетевого интерфейса:
read eth_number_two
echo IP адрес:
read ip_address
echo Маска:
read net_mask
echo $eth_number_two $ip_address $net_mask >> /etc/network/interfaces
echo
;;
esac
;;
esac
echo "1. Бекапим файлик"
echo "2. Создаем новый"
echo "3. Вносим настройки интернета"
echo
read bla;
case $bla in
1)
echo
# Бекапим файл в папку профиля
cp -i -p /etc/network/interfaces /home/vahminator
echo
ls -l
;;
2)
echo
echo Ну что, создадим новый файл с настройками??
sudo touch interfaces
echo
echo Все создано!!
ls -l
;;
3)
echo
echo Динамичесий
echo Статический
echo Вторичный сетевой интерфейс
echo
read network_setting
case $network_setting in
1)
sudo /etc/init.d/networking restart #Рестарт системы и настройки DHCP появятся автоматически
2)
sudo chmod 777 * /etc/network/interfaces # Ставим права на запись
cat /dev/null > /etc/network/interfaces #Чистим файл от мусора
# Далее тупо записываем новое содержимое в interfaces с переменными
echo "# This file describes the network interfaces available on your system" >> /etc/network/interfaces
echo "# and how to activate them. For more information, see interfaces(5). " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The loopback network interface" >> /etc/network/interfaces
echo "auto lo" >> /etc/network/interfaces
echo "iface lo inet loopback " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The primary network interface " >> /etc/network/interfaces
echo "auto eth$eth_number " >> /etc/network/interfaces
echo "iface eth$eth_number inet static " >> /etc/network/interfaces
echo " address $address " >> /etc/network/interfaces
echo " netmask $netmask" >> /etc/network/interfaces
echo " network $network" >> /etc/network/interfaces
echo " broadcast $broadcast" >> /etc/network/interfaces
echo " gateway $gateway" >> /etc/network/interfaces
echo " dns-nameservers $dns " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo " " >> /etc/network/interfaces
echo "# The secondary network interface" >> /etc/network/interfaces
echo "auto eth$eth_number_two" >> /etc/network/interfaces
echo "iface eth$eth_number_two inet static" >> /etc/network/interfaces
echo " address $ip_address" >> /etc/network/interfaces
echo " netmask $net_mask" >> /etc/network/interfaces
echo
#******************************** Вводим значения в переменные ************************************
echo Введите данные:
read eth_number
read address
read netmask
read network
read broadcast
read gateway
read dns
echo $eth_number $address $netmask $network $broadcast $gateway $dns >> /etc/network/interfaces
echo
echo Показать настройки?
echo 1- Да
echo 2- НЕт
echo
read confirmation
case $confirmation in
1)
nano inet
;;
2)
exit
;;
esac
3)
echo Введите данные:
echo
echo Номер сетевого интерфейса:
read eth_number_two
echo IP адрес:
read ip_address
echo Маска:
read net_mask
echo $eth_number_two $ip_address $net_mask >> /etc/network/interfaces
echo
;;
esac
;;
esac
Немного о code-style
Неужели отступы - это так сложно? Читать ваш код неудобно, не ясно где какой блок завершается.
Рекомендую придерживаться правила, брать в кавычки строки.
К тому же у вас не обработки варианта, который не входит в перечисленные: *)
Комментарии лучше использовать над целевой строкой, а не в конце. Если уж в конце, то в отдельной колонке.
Вообще рекомендую к прочтению Style Guide Shell
Вот что пишет..
Глядя на представленный код, я не могу найти ошибку. Однако я не уверен, что всё верно, так как разобраться в неотформатированном коде сложно.
Цитата: Romik
Глядя на представленный код, я не могу найти ошибку. Однако я не уверен, что всё верно, так как разобраться в неотформатированном коде сложно.
код выше исправил на отформатированый... Может так будет лучше видно...
Но я так и не увидел, что могло бы вызвать представленную вами ошибку.