Korzystam z systemu Ubuntu Linux. Załóżmy, że istnieje program o nazwie myprogram
. Ten program monituje użytkownika o wprowadzenie danych; w szczególności użytkownik musi wpisać liczbę całkowitą po wyświetleniu monitu i nacisnąć Enter. Chciałbym zautomatyzować ten proces za pomocą skryptu bash. W szczególności chciałbym wykonać myprogram
, powiedzmy, 100 razy (przy użyciu licznika, i
który przechodzi od 1
do 100
). Przy każdym wykonaniu myprogram
chciałbym wprowadzić bieżącą wartość i
po wyświetleniu monitu.
(Nawiasem mówiąc, myprogram
bierze opcje / przełączniki -options
, z których wszystkie będą stałe, a zatem określone w skrypcie bash.)
Niekompletny szkielet tego skryptu bash może być:
#!/bin/bash
for i in {1..100}
do
myprogram -options
done
Teraz chciałbym zmodyfikować powyższy kod, aby bieżąca wartość i
została wprowadzona po wyświetleniu monitu przez program. Jak najlepiej to zrobić?
Witryna oprogramowania, którego używam, sugeruje użycie <<EOF
na końcu myprogram -options
wiersza. Myślę, że to każe bashowi spojrzeć na „koniec pliku”, aby użyć danych wejściowych. Ale co jeśli nie chcę umieszczać danych wejściowych na końcu pliku? Co jeśli chciałbym umieścić go natychmiast po <<
lub <
?
Powodem jest to, że sprawy się skomplikują. Na przykład mogę wprowadzić licznik liczb całkowitych, j
który zmienia się w nieliniowy, niesekwencyjny sposób. Chciałbym następnie podać bieżącą wartość j
do myprogram
na każdej iteracji, ale wartość j
może się zmieniać między wywołaniem myprogram -options
a końcem pliku EOF
.
Masz jakieś sugestie?