【Bash百宝箱】shell内建命令之eval、exec、exit、export

1、eval

在shell中,内建(builtin)命令eval,格式如下:

eval [arg ...]

eval命令首先读取其参数值,然后把它们连接成一个命令并执行这个命令,这个命令的退出状态即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

2、exec

在shell中,内建(builtin)命令exec,格式如下:

exec [-cl] [-a name] [command [arguments]]

exec命令,如果指定了command,它就会取代当前的shell而不是创建新的进程,所以命令执行完毕后shell也就退出了。如果设置了“-l”即login选项,在command的第0个参数前会添加符号“-”,这是login所需的。如果设置了“-c”即clear选项,command命令将在一个空的环境中执行。如果指定了“-a name”选项,name会作为第0个参数传给command。若没有指定command,可以使用重定向来影响当前的shell。重定向成功时退出状态为0,否则为1。

exec后面的命令如果是多个简单命令组合而成的复合命令,只执行第一个命令,可以把这些符合命令写入shell脚本中,然后通过exec执行这个脚本,此时脚本中所有的命令都会执行。

3、exit

在shell中,内建(builtin)命令exit,格式如下:

exit [n]

exit命令退出当前shell,退出状态为n,若没有指定n,退出状态为执行的最后一个命令的退出状态。

4、export

在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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值