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