#bash
#bash
Вопрос:
Я вхожу на удаленный сервер с помощью SSH-клиента. Я написал скрипт, который будет выполнять две команды на сервере.Но, поскольку первая команда выполняет скрипт bash, который в конце вызывает команду «bash». Это приводит к выполнению только одной команды, а не другой.
Я не могу отредактировать первый скрипт, чтобы прокомментировать или удалить вызов bash.
я написал следующий сценарий:
abc.sh
#!/bin/bash
command1="sudo -u user_abc -H /abc/xyz/start_shell.sh"
command2=".try1.sh"
$command1 amp;amp; $command2
Выполняется только команда 1, а не вторая, поскольку вызов «bash» создает новый процесс, вторая команда не выполняется.
Комментарии:
1. Это выполняется
$command1
первым и после его возврата$command2
выполняется только в случае$command1
успешного возврата (код возврата0
). Если это не то, что вам нужно, объясните более подробно, чего вы действительно хотите.
Ответ №1:
Решение 1
Поскольку вы можете выполнить start_shell.sh
, у вас должны быть права на чтение. Поэтому вы можете скопировать скрипт, изменить его так, чтобы он больше не вызывал bash, и выполнить измененную версию.
Я думаю, это было бы лучшим решением. Если вам действительно действительно нужно использовать start_shell.sh
как есть, вы можете попробовать одно из следующих решений.
Решение 2
Попробуйте закрыть stdin с помощью <amp;-
. Интерактивный сеанс bash завершится немедленно, если нет стандартного ввода.
sudo -u user_abc -H /abc/xyz/start_shell.sh <amp;-; ./try1.sh
Решение 3
Измените порядок, если обе команды независимы.
./try1.sh; sudo -u user_abc -H /abc/xyz/start_shell.sh