bash调用正在创建一个新进程。我希望在同一进程中执行下一个命令

问题描述 投票:0回答:1

我使用SSH客户端登录远程服务器。我编写了一个脚本,它将在服务器上执行两个命令。但是,第一个命令执行一个bash脚本,最后调用“bash”命令。这导致仅执行一个命令而不执行另一个命令。

我无法编辑第一个脚本来评论或删除bash调用。

我写了以下脚本:

ABC.是

#!/bin/bash
command1="sudo -u user_abc -H /abc/xyz/start_shell.sh"
command2=".try1.sh"
$command1 && $command2

由于“bash”调用正在创建第二个命令未执行的新进程,因此只执行命令1而不执行第二个命令。

bash
1个回答
0
投票

Solution 1

由于您可以执行start_shell.sh,因此您必须具有读取权限。因此,您可以复制脚本,对其进行修改,使其不再调用bash,并执行修改后的版本。

我认为这将是最好的解决方案。如果你真的真的必须按原样使用start_shell.sh,那么你可以尝试以下解决方案之一。

Solution 2

尝试使用<&-关闭stdin。如果没有stdin,交互式bash会话将立即退出。

sudo -u user_abc -H /abc/xyz/start_shell.sh <&-; ./try1.sh

Solution 3

如果两个命令都是独立的,请更改顺序。

./try1.sh; sudo -u user_abc -H /abc/xyz/start_shell.sh
© www.soinside.com 2019 - 2024. All rights reserved.