Bunu yapmanın alternatif bir yolu da, standart girdiyi, tüm kullanıcı girişini programın beklediği sırada aldığınız dosyaya yönlendirmek olacaktır. Örneğin, programla (çağrılan 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?"
ve giriş dosyası (denir input.in
)
Tomas
26
Bunu terminalden aşağıdaki iki yoldan biriyle çalıştırabilirsiniz:
$ cat input.in | ./script.sh
$ ./script.sh < input.in
ve sadece betiği çalıştırmak ve verileri manuel olarak girmekle aynı olacaktır - "Merhaba Tomas. 26 yaşındasın, değil mi?" satırını yazdıracaktı.
As Radu Rădeanu gelmiştir zaten önerilen şunu kullanabilirsiniz cat
bir değişken bir bir dosyanın içeriğini okumak için komut dosyası içinde - bu durumda, Eğer bu özel değişken için yalnızca istediğiniz değere sahip, tek bir satır içerecek şekilde her dosyayı gerekir. Yukarıdaki örnekte, giriş dosyasını bir adla (say, name.in
) ve bir yaşla (say, age.in
) ayırır ve sırasıyla read name
ve read age
satırlarını ve satırlarını değiştirirsiniz .name=$(cat name.in)
age=$(cat age.in)
KEY=VALUE
mi yoksa çiftler mi? Çözümler oldukça farklı (ikincisi ise, Takkat'ın cevabı eski Radu'nun cevabı geçerlidir)