Uma maneira alternativa de fazer isso seria apenas redirecionar a entrada padrão para o seu arquivo, onde você tem toda a entrada do usuário na ordem esperada pelo programa. Por exemplo, com o programa (chamado 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?"
e o arquivo de entrada (chamado input.in
)
Tomas
26
você pode executar isso no terminal de uma das seguintes maneiras:
$ cat input.in | ./script.sh
$ ./script.sh < input.in
e seria equivalente a apenas executar o script e inserir os dados manualmente - seria impressa a linha "Olá Tomas. Você tem 26 anos, certo?".
Como Radu Rădeanu tem já foi sugerido , você pode usar cat
dentro do seu script para ler o conteúdo de um arquivo em um avariable - nesse caso, você precisa de cada arquivo para conter apenas uma linha, com apenas o valor que deseja para essa variável específica. No exemplo acima, você poderia dividir o arquivo de entrada em um com o nome (por exemplo, name.in
) e um com a idade (por exemplo, age.in
), e mudar o read name
e read age
linhas para name=$(cat name.in)
e age=$(cat age.in)
respectivamente.
KEY=VALUE
pares? As soluções são bastante diferentes (se ele é o último, a resposta de Takkat aplica, o ex-Radu de)