在shell中,內(nèi)建(builtin)命令eval,格式以下:
eval [arg ...]
eval命令首先讀取其參數(shù)值,然后把它們連接成1個命令并履行這個命令,這個命令的退出狀態(tài)即eval的退出狀態(tài),如果沒有指定參數(shù),其退出狀態(tài)為0。
在簡單命令的場景中,eval并沒有甚么特殊的地方,以下例子:
$ foo="uname"
$ uname
Linux
$ $foo
Linux
但是,遇到復(fù)雜命令時,eval就發(fā)揮其作用了,以下例子:
$ foo="uname | grep Linux"
$ uname | grep Linux
Linux
$ $foo
uname: extra operand ‘|’
Try 'uname --help' for more information.
$ eval $foo
Linux
在shell中,內(nèi)建(builtin)命令exec,格式以下:
exec [-cl] [-a name] [command [arguments]]
exec命令,如果指定了command,它就會取代當(dāng)前的shell而不是創(chuàng)建新的進程,所以命令履行終了后shell也就退出了。如果設(shè)置了“-l”即login選項,在command的第0個參數(shù)前會添加符號“-”,這是login所需的。如果設(shè)置了“-c”即clear選項,command命令將在1個空的環(huán)境中履行。如果指定了“-a name”選項,name會作為第0個參數(shù)傳給command。若沒有指定command,可使用重定向來影響當(dāng)前的shell。重定向成功時退出狀態(tài)為0,否則為1。
exec后面的命令如果是多個簡單命令組合而成的復(fù)合命令,只履行第1個命令,可以把這些符合命令寫入shell腳本中,然后通過exec履行這個腳本,此時腳本中所有的命令都會履行。
在shell中,內(nèi)建(builtin)命令exit,格式以下:
exit [n]
exit命令退出當(dāng)前shell,退出狀態(tài)為n,若沒有指定n,退出狀態(tài)為履行的最后1個命令的退出狀態(tài)。
在shell中,內(nèi)建(builtin)命令export用于把當(dāng)前shell的變量、函數(shù)導(dǎo)出到子shell,這樣在子shell中就能夠使用父shell中定義的變量、函數(shù)。export的退出狀態(tài)為0,除非格式毛病或指定了不存在的函數(shù)。export有多種格式,以下:
export 顯示當(dāng)前導(dǎo)出的變量
export -p 顯示當(dāng)前導(dǎo)出的變量
export name 導(dǎo)出變量name
export name=word 導(dǎo)出變量name并賦值為word
export -n name 取消導(dǎo)出的變量name
export -f 顯示當(dāng)前導(dǎo)出的函數(shù)
export -f name 導(dǎo)出函數(shù)name
export -fn name 取消導(dǎo)出的函數(shù)name