Один из альтернативных способов сделать это - просто перенаправить стандартный ввод в ваш файл, где у вас есть весь пользовательский ввод в порядке, ожидаемом программой. Например, с помощью программы (называется script.sh
)
#!/bin/bash
echo "Enter your name:"
read name
echo "...and now your age:"
read age
# example of how to use the values now stored in variables $name and $age
echo "Hello $name. You're $age years old, right?"
и входной файл (называется input.in
)
Tomas
26
Вы можете запустить это из терминала одним из следующих двух способов:
$ cat input.in | ./script.sh
$ ./script.sh < input.in
и это было бы равносильно простому запуску сценария и вводу данных вручную - это вывело бы строку «Здравствуйте, Томас. Вам 26 лет, верно?».
Как Radu Rădeanu имеет уже предложил , вы можете использовать cat
внутри сценария , чтобы прочитать содержимое файла в avariable - в этом случае, вам нужно каждый файл содержит только одну строку, только значение , которое требуется для этой конкретной переменной. В приведенном выше примере, вы бы разделить входной файл на один с именем (скажем, name.in
) и один с возрастом (скажем, age.in
), а также изменить read name
и read age
строку name=$(cat name.in)
и age=$(cat age.in)
соответственно.
KEY=VALUE
пары? Решения совершенно разные (если это последнее, то ответ Такката применим, а ответ прежнего Раду)