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, iktóry przechodzi od 1do 100). Przy każdym wykonaniu myprogramchciałbym wprowadzić bieżącą wartość ipo wyświetleniu monitu.
(Nawiasem mówiąc, myprogrambierze 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ść izostała wprowadzona po wyświetleniu monitu przez program. Jak najlepiej to zrobić?
Witryna oprogramowania, którego używam, sugeruje użycie <<EOFna końcu myprogram -optionswiersza. 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, jktóry zmienia się w nieliniowy, niesekwencyjny sposób. Chciałbym następnie podać bieżącą wartość jdo myprogramna każdej iteracji, ale wartość jmoże się zmieniać między wywołaniem myprogram -optionsa końcem pliku EOF.
Masz jakieś sugestie?