Co můžete dělat s eval
příkaz? Proč je to užitečné? Je to nějaká vestavěná funkce v bash? Neexistuje žádný man
stránku pro to..
Přijatá odpověď:
eval
je součástí POSIX. Je to rozhraní, které může být vestavěné do shellu.
Je to popsáno v „POSIX Programmer’s Manual“:http://www.unix.com/man-page/posix/1posix/eval/
eval - construct command by concatenating arguments
Vezme argument a vytvoří z něj příkaz, který provede shell. Toto je příklad manuálové stránky:
1) foo=10 x=foo
2) y='$'$x
3) echo $y
4) $foo
5) eval y='$'$x
6) echo $y
7) 10
- V prvním řádku definujete
$foo
s hodnotou'10'
a$x
s hodnotou'foo'
. - Nyní definujte
$y
, který se skládá z řetězce'$foo'
. Znak dolaru musí být uvozen
pomocí'$'
. - Chcete-li zkontrolovat výsledek,
echo $y
. - Výsledkem bude řetězec
'$foo'
- Nyní zopakujeme přiřazení s
eval
. Nejprve vyhodnotí$x
na řetězec'foo'
. Nyní máme příkazy=$foo
který bude vyhodnocen jakoy=10
. - Výsledek
echo $y
je nyní hodnota'10'
.
Toto je běžná funkce v mnoha jazycích, např. Perl a JavaScript.
Podívejte se na perldoc eval pro další příklady:http://perldoc.perl.org/functions/eval.html
Linux – odesílání textového vstupu na samostatnou obrazovku?
Skript pro sledování nových souborů ve složce?