Выход из сценария bash без прерывания соединения s sh - PullRequest
0 голосов
/ 14 января 2020

Я довольно новичок в сценариях bash и пытаюсь написать сценарий, который выполняет некоторые основные операции c.

Я хочу проверить определенные условия и, если они выполняются, завершиться сценарий. Так, например, я хочу проверить, был ли zip-файл успешным:

echo "Zipping file..."
for file in $fileList;
    do
        echo $file | zip -v $archive -@
        if [[ $? != 0 ]];
            then
                echo "Error creating zip"
                exit 1
        fi
    done

Однако происходит то, что сигнал exit 1 также приводит к разрыву соединения s sh:

Zipping file...

Command 'zip' not found, but can be installed with:

sudo apt install zip

Error creating zip
Connection to 3.137.7.52 closed.

Как правильно завершить работу сценария, не отключаясь от сервера?

1 Ответ

1 голос
/ 14 января 2020

Если вы оберните все это в сценарий с использованием shebang #!/bin/bash, тогда exit 1 будет в порядке, но если вы запустите его как один пользователь непосредственно в консоли, тогда этот exit 1 означает выход из консоли, и это сломает s sh соединение obvy

cat > ziper.sh << \EOF
#!/bin/bash
echo "Zipping file..."
for file in $fileList;
    do
        echo $file | zip -v $archive -@
        if [[ $? != 0 ]];
            then
                echo "Error creating zip"
                exit 1
        fi
    done
EOF

./ziper.sh

В режиме oneliner break

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...