它的含义: exec `ksh -c "echo /usr/bin/expectk \"$0\" -- $*"`

它的含义: exec `ksh -c "echo /usr/bin/expectk \"$0\" -- $*"`

在我的公司,有很多维护脚本。我发现一个脚本的开头是这样的:

#!/bin/sh
# the next line restarts using expectk \
exec `ksh -c "echo /usr/bin/expectk \"$0\" -- $*"`

但我不明白为什么以及如何使用 expectk 重新启动。

有人帮忙吗?

答案1

该命令看起来比实际要复杂得多。本质上它的作用(可以简化为)是

#!/bin/sh
exec /usr/bin/expectk $0 -- $*

您的脚本正在exec执行 echo 命令的输出。上面的重写版本删除了 echo 并直接执行了 exec。然而更好的方法是

#!/bin/sh
exec /usr/bin/expectk "$0" -- "$@"

这解决了脚本的任何参数包含空格时会出现的问题。

相关内容