我在 shell 脚本的循环中运行 Perl 脚本:
while [ $currentDate -le $toDate ]; do
// code here...
exec /users/my_user/script_name $currentDate
// code here...
done
我已经确认了while-loop
循环。然而,在 Perl 脚本运行一次之后,就while-loop
结束了。
有人可以对此有所了解吗?
你正在使用exec
. exec
用新程序替换 shell 进程。您可能只想删除exec
关键字。
exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
用给定的命令替换 shell。
执行
COMMAND
,用指定的程序替换这个 shell。ARGUMENTS
成为 的论据COMMAND
。
改变:
exec /users/my_user/script_name $currentDate
到:
/users/my_user/script_name $currentDate
您遇到的问题是由
exec /users/my_user/script_name $currentDate
exec 导致的原因是您正在调用的 perl 脚本将当前程序替换为新程序并保留当前 PID。
如果从该行中删除 exec,它将允许程序正确生成并保持 shell 按预期运行。