开发者问题收集

如何在 perl 中依次运行两个命令

2023-07-06
108

我尝试使用 sudo 之类的 dzdo 运行 2 个 perl 命令,但不知何故无法实现结果。有人能帮我吗?

这是我的需求示例。我有 2 个脚本,分别名为 /home/user1/script1.pl/home/user1/script2.pl

在这里,我有条件在第一个脚本成功执行后运行第二个脚本。所以我尝试使用以下方法,但仍然失败。

cmd="dzdo -iHu admin /home/user1/script1.pl && dzdo -iHu admin /home/user1/script2.pl";
cmd="dzdo -iHu admin "/home/user1/script1.pl" ; "/home/user1/script2.pl"";
cmd="dzdo -iHu admin /home/user1/script1.pl" && "dzdo -iHu admin /home/user1/script2.pl";
cmd="dzdo -iHu admin "/home/user1/script1.pl ; /home/user1/script2.pl"";
cmd="$cmd1 && $cmd2";
cmd="${cmd1} && ${cmd2}";

对于上述所有方法,我都收到“未知选项:ihu”的错误。我甚至尝试了许多组合,但最终都出现相同的错误。我想我缺少一些基本的声明。如果我提到下面的内容,它会运行第二个脚本,但不运行第一个脚本。

cmd1="dzdo -iHu admin /home/user1/script1.pl";
cmd2="dzdo -iHu admin /home/user1/script2.pl";

如果我在 perl 脚本之外手动运行脚本,则两个脚本都会按预期运行。

[email protected] > dzdo -iHu admin /home/user1/script1.pl ; dzdo -iHu admin /home/user1/script2.pl
2个回答

首先,我对 dzdo 不熟悉,也找不到它的文档。


I am getting the error as "Unknown option: ihu"

如果它与 sudo 的选项相同,则 -ihu 没有什么意义。你说你正在使用的 -iHu 更有意义。

如果这不是问题所在,我无法对这一部分提供更多帮助。请参阅其文档。 ( man dzdo ?)您可以尝试单独传递它们( -i -H -u )。


I am trying to run 2 perl commands with sudo -like dzdo

如果它像 sudo ,它需要一个程序和传递给该程序的参数。

因此,您可以使用以下命令实现您想要的目标(一旦您解决了选项问题):

dzdo -iHu admin /usr/bin/sh -c '/home/user1/script1.pl && /home/user1/script2.pl'
ikegami
2023-07-06

我将两个脚本分为 CMD1 和 CMD2,并在声明 CMD1 和 CMD2 后执行两个脚本。

CMD1="dzdo -iHu admin /home/user1/script1.pl"; 
$CMD1
CMD2="dzdo -iHu admin /home/user1/script2.pl"; 
$CMD2
Prakash Somasundaram
2023-07-10