LINUX.ORG.RU

sed в bash не работает при запуске из массива

 , ,


0

1

Здравствуйте уважаемые специалисты, я изучаю линукс для своих целей, и решил попробовать сделать свой bash скрипт для автоматизации установки LAMP под свои старенькие сайты.

С командой sed выходит загвоздка, в чистом виде она работает, а внутри массива выдает ошибку, остальные команды работают при вставке из массива. Прикладываю код целиком. Не судите строго только учусь 2 неделю

#!/bin/bash

#так команды работают sudo sed -i 's/Timeout 160/Timeout 150/' /etc/apache2/apache2.conf sudo sed -i '$a ServerName 127.0.0.1' /etc/apache2/apache2.conf

#скрипт работает как цикл, который: # 1. задает вопрос и спрашивает варианты для выбора 2. команда

declare script=(

«Устанавливаем MC ?» «sudo apt install mc»

# а тут не работает

«Заменить Timeout 300 на Timeout 160 файла /etc/apache2/apache2.conf ?» «sudo sed -i 's/Timeout 160/Timeout 150/' /etc/apache2/apache2.conf» «Добавить текст ServerName 127.0.0.1 в файл /etc/apache2/apache2.con ? » «sudo sed -i '$a ServerName 127.0.0.1' /etc/apache2/apache2.conf» «Просмотреть и Произвести редактирование основного файла настроек ?» «sudo nano /etc/apache2/apache2.conf» «Посмотреть все запущенные модули Apache2 ?» «sudo apache2ctl -M»

)

for i in {0..9..2} do y=i+1 while true; do echo ${script[$i]} read -p «Ответьте 'ДА' - y/д, 'НЕТ' - n/н или 'Выход из сценария' - q/й» yn case $yn in [YyДд]* ) echo; echo «${script[$y]}»; ${script[$y]}; break;; [NnНн]* ) echo «Отмена»; break;; [QqЙй]* ) echo «Выход из сценария»; exit;; * ) echo «Пожалуйста ответьте 'ДА' - y/д, 'НЕТ' - n/н или 'Выход из сценария' - q/й»;; esac done echo done

for i in {0..9..2} do y=i+1

предположу, что тут пропущено let: do let y=i+1

Но вообще тут инкремент вроде и не нужен, можно сразу множество сделать {1..9..2}

Дальше глаза сломались

CaHbl4
()

Какой смысл в запуске скрипта из под обычного юзера если ни одно значимое действие не выполняется без sudo? В таком случае sudo надо вынести из скритпа и весь скрипт запускать от рута.

futurama ★★★★★
()