Задать вопрос
webirus
@webirus
Тыжверстальщик! Наверстай мне упущенное...

Как получить переменные BASH их TXT файла?

У меня есть текстовый файл, который содержит 3 строки текста.

db
db_pass
db_pass

И есть баш скрипт, который выполняет действия с этими строчками.

sudo mysqldump -u$username -p$password $database > $database.sql

Сейчас мне приходится вручную вписывать переменные, это не удобно.
Можно ли как-то достать из файла их?
  • Вопрос задан
  • 442 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Записываете переменные в файл, как в обычном sh-скрипте - VAR1=foo, VAR2=bar и т. д, а в начале вашего скрипта говорите "source /path/to/varsfile", и все переменные оттуда подтягиваются.
Ответ написан
Immortal_pony
@Immortal_pony
Получить N-ную строку файла можно, к примеру, так:
# $n - номер необходимой строки
head -$n file | tail -1;


Предположу, что в исходных данных у вас ошибка, так как два раза упоминается db_pass и ни разу username.
Допустим, он выглядит все же так:
db
username
db_pass


Тогда в итоге должен получиться следующий код:
sudo mysqldump -u`head -2 file | tail -1` -p`head -3 file | tail -1` `head -1 file | tail -1`> $database.sql
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@abcd0x00
getlineno()
{
    sed -n "$2{p;q}" "$1"
}

username=`getlineno datafile.txt 2`
password=`getlineno datafile.txt 3`
database=`getlineno datafile.txt 1`

sudo mysqldump -u$username -p$password $database > $database.sql

unset password username database
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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