本文适用于以下主题:

  1. Unix & Linux convert string to command

  2. UNIX & Linux 将字符串转换成命令执行

  3. Linux sh脚本中怎样将字符串转化为命令

答案:

在shell脚本中使用eval命令(此命令是bash的内置命令,凡是bash的内置命令查看帮助时用man eval),而不是exec。

语法:

eval 参数

参数可以为一组命令的字符串,如“eval yum install dstat–y ”,如果不加参数直接执行eval也可以,返回错误代码依旧为0(成功执行),但没有意义。

为什么不用exec?

因为exec在执行一次后自动退出当前shell脚本,导致在exec后的所有行全部忽略。

为什么exec会自动退出?

exec不启动新的shell,而是用将后面所跟的命令替换当前的shell(当前运行的脚本或登录会话)的进程。