LINUX.ORG.RU

проблема с запуском баш-скрипта

 


0

1

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

$ curl https://mawbah.github.io/ru | sh

cкрипт должен скачать себя вместе с конфигами, позадавать вопросы и запустить другой скрипт (в текущей версии - просто вывести значение переменной). Проблема в том, что запросы в текущий терминал не идут. Если вывод cюрла в файл перенаправить, поменять права и запустить вручную, то работает. Как исправить или какой командой вызывать? И что конкретно читать для понимания работы процессов?

скрипт:

#!/bin/sh
RED='\033[0;31m'
NC='\033[0m'

## скачивание с github'а (ветка master) zip-архива со скриптами и настройками и его распаковка в домашнюю директорию
wget https://github.com/mawbah/mawbah.github.io/archive/master.zip
pacman -Sy --noconfirm unzip
unzip master.zip -d ~/

## локализация конфигурационного файла. 
echo '
LOCALE1="en_EN"
LOCALE2="ru_RU"
LOCALE3="reserve"
SYSTEM_LOCALE="LANG=ru_RU.UTF-8"
CONSOLE_KEYMAP="ruwin_ct_sh-UTF-8"
X11_KEYMAP_LAYOUT="us,ru"
X11_KEYMAP_MODEL="pc104"
X11_KEYMAP_VARIANT="-"
X11_KEYMAP_OPTIONS="grp:ctrl_shift_toggle,terminate:ctrl_alt_bksp,grp_led:scroll"
DEFAULT_FONT="UniCyr_8x16"
TIME_ZONE="Asia\/Vladivostok"
' >> ~/mawbah.github.io-master/mawbah/mawbah.conf

## подключение конфигурационного файла
source ~/mawbah.github.io-master/mawbah/mawbah.conf

## локализация текущего терминала
loadkeys $CONSOLE_KEYMAP
setfont $DEFAULT_FONT

## запрос пароля рута и имени и пароля пользователя
echo -e "${RED}пароль суперпользователя: ${NC}"
read -s -t 25
sed -i "s/^RP=.*/RP=\"$REPLY\"/" ~/mawbah.github.io-master/mawbah/mawbah.conf

echo -e "${RED}имя пользователя: ${NC}"
read -t 25
sed -i "s/^UN=.*/UN=\"$REPLY\"/" ~/mawbah.github.io-master/mawbah/mawbah.conf

echo -e "${RED}пароль пользователя: ${NC}"
read -s -t 25
sed -i "s/^UP=.*/UP=\"$REPLY\"/" ~/mawbah.github.io-master/mawbah/mawbah.conf
 
## подготовка экрана
clear; lsblk; echo

## выбор конфигурации дисков
PS3=$(echo -e "${RED}шаблон разметки дисков: ${NC}")
select SLICING_TEMPLATE in $(ls ~/mawbah.github.io-master/mawbah/templates/); 
do
   echo "SLICING_TEMPLATE $SLICING_TEMPLATE"   
   break
done

лежит тут: https://github.com/mawbah/mawbah.github.io/blob/master/ru

Непонятно зачем приводить весь скрипт, проблема в том, что у вашего sh stdin связан не с терминалом, а с pipe'ом, как он будет делать ″read″, если ему туда идёт текст скрипта?

mky ★★★★★
()
Ответ на: комментарий от mky

Хотел дать исчерпывающую информацию. Спасибо за подсказку! Буду буду читать.

basarga
() автор топика
Ответ на: комментарий от slippyk

Мешает отсутствие опыта и знаний) Спасибо, буду пробывать.

basarga
() автор топика

немного инфы по присвоению значений переменным в конвейере: https://habr.com/post/195152/ см. «Tips & trics», п.4

basarga
() автор топика
Ответ на: комментарий от basarga

Да, ладно, тут догадаться довольно трудно, если не увидеть где-нибудь.

xaizek ★★★★★
()
Ответ на: комментарий от basarga

Глупо это когда пытаешься писать что-то сложнее пары строчек на химере, называемой шеллом.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.