在我的公司,有很多维护脚本。我发现一个脚本的开头是这样的:
#!/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" -- "$@"
这解决了脚本的任何参数包含空格时会出现的问题。