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 a partir do terminal de uma das duas maneiras a seguir:
$ cat input.in | ./script.sh
$ ./script.sh < input.in
e seria equivalente a apenas executar o script e inserir os dados manualmente - ele imprimiria a linha "Hello Tomas. Você tem 26 anos, certo?".
Como Radu Rădeanu tem já sugerido , você poderia usar cat
dentro do seu script para ler o conteúdo de um arquivo em uma variável - nesse caso, você precisa que cada arquivo contenha apenas uma linha, com apenas o valor que você quer para essa variável específica. No exemplo acima, você dividiria o arquivo de entrada em um com o nome (digamos, name.in
) e outro com a idade (digamos, age.in
), e alteraria as linhas read name
e read age
para name=$(cat name.in)
e age=$(cat age.in)
respectivamente.