Pro téměř všechny programy, oba echo $i | myprogram -options a myprogram -options <<<$i by měl fungovat, a to tak, že do programu přidáte $i prostřednictvím standardního vstupu.
 <foo použije obsah souboru s názvem foo jako stdin.
 <<foo použije text mezi tímto a řádkem tvořeným výhradně foo jako standardní vstup. Toto je dokument zde (heredoc), jak řekl Gilles; EOF ve skutečnosti neznamená konec souboru, je to jen běžný vymezovač heredoc (v tomto příkladu místo toho používáme „foo“).
 <<<foo použije řetězec "foo" jako standardní vstup. Můžete také zadat proměnnou $foo a shell použije svůj obsah jako stdin, jak jsem ukázal výše. Toto se nazývá herestring , protože používá krátký řetězec na rozdíl od celého bloku, jako v heredoc. Herestrings fungují v bash, ale ne v /bin/sh .
 Syntaxe doporučená tímto webem se nazývá dokument zde. Vstup do souborového programu začíná bezprostředně pod řádkem obsahujícím <<EOF a není ukončen koncem skriptu, ale řádkem obsahujícím přesně text EOF (dejte pozor, abyste neměli mezery navíc). Mimochodem, můžete použít libovolnou koncovou značku, která neobsahuje žádný speciální znak shellu:EOF není klíčové slovo, je pouze tradiční.
#!/bin/bash
for i in {1..100}
do
   myprogram -options <<EOF
$i
EOF
   for j in {1..42}; do
     myprogram2 <<EOF
$i
$j
EOF
   done
done
zde dokumenty, jak je zmíněno výše Kevinem a Gillesem, nebo jednoduché potrubí bude v mnoha případech fungovat.
V případě složitějších situací se můžete podívat na Expect nebo podobné (např. modul Expect::Simple CPAN je velmi snadno použitelná implementace perlu). osobně preferuji modul perl (samotný Expect je tcl), ale existují implementace pro mnoho běžných skriptovacích jazyků. Je dokonce možné napsat velmi primitivní implementace myšlenky v sh nebo bash pomocí while a read.
Obecnou myšlenkou nástrojů Expect a podobných nástrojů je počkat na zadaný řetězec nebo vzor ve výstupu programu a poté jej přivést na libovolný vstup.
Běžným příkladem použití je automatizace přihlášení „očekáváním“ (tj. čekáním na) řetězce „ogin:“, odesláním přihlašovacího jména, následným očekáváním řetězce „word:“ a odesláním hesla.
Jednou z posledních možností, pokud máte zdroj myprogramu, je upravit jej tak, aby vstup, který mu chcete zadat, převzal jako volbu příkazového řádku. To může být trochu více práce předem, ale bude to mnohem méně přitěžující, než si pohrávat s Expect nebo předávat data do programu, který nebyl navržen pro použití tímto způsobem.
... a nezapomeňte odeslat svůj patch do myprogramu zpět proti proudu :) I když se jim nelíbí způsob, jakým jste jej nakódovali, mohl by se jim tento nápad líbit natolik, že by si funkci přidali sami. Upstream vývojáři mají tendenci ocenit lidi, kteří se vyřádí a přispívají, spíše než aby požadovali nebo si stěžovali.