我使用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而不执行第二个命令。
由于您可以执行start_shell.sh
,因此您必须具有读取权限。因此,您可以复制脚本,对其进行修改,使其不再调用bash,并执行修改后的版本。
我认为这将是最好的解决方案。如果你真的真的必须按原样使用start_shell.sh
,那么你可以尝试以下解决方案之一。
尝试使用<&-
关闭stdin。如果没有stdin,交互式bash会话将立即退出。
sudo -u user_abc -H /abc/xyz/start_shell.sh <&-; ./try1.sh
如果两个命令都是独立的,请更改顺序。
./try1.sh; sudo -u user_abc -H /abc/xyz/start_shell.sh