Eval komento on erittäin tehokas; kuvaannollisesti jos käsky ei onnistu niin kun laittaa sen eteen eval niin johan onnistuu. Tavallaan eval on käsky tulkille tulkata käsky kahteen kertaan: esimerkiksi käakyssä: eval echo {$a..$b} tulkkaus yksi muuttaa numero-arvoiksi $a:n ja $b:n ja kierroksella kaksi tulkkaa ihan normaalisti.
Mutta eval-käsky on turvallisuusriski jos skripti ei rajoita eval-komentojaan pelkästään oman skriptin käyttöön sillä jos vieraat pääsevät eval-käskyyn käsiksi niin se antaa  heille mahdollisuuden tehdä sellaistakin mikä ei ole ollut tarkoitus. Eval-komentoa kannattaakin välttää jos vain mahdollista. Tässä muutama keino:

a=~; eval ls $a
a=~; ls ${a/#\~/$HOME}

a=1; b=10; eval echo {$a..$b}
a="ls *"; eval $a
