Работает ли подоболочка одновременно? - PullRequest
1 голос
/ 05 августа 2020

У меня есть следующий сценарий оболочки:

#!/bin/sh

echo "Clone CHARTS repo"
LC_CODE=$(git clone https://"$GIT_USER":"$GIT_AT"@"$CHARTS_URL";echo $?)
if [ "$LC_CODE" -ne 0 ]; then
  echo "Could not find $CHARTS_URL"
  exit 1
fi

echo "Clone GITOPS repo"
LC_CODE=$(git clone https://"$GIT_USER":"$GIT_AT"@"$GITOPS_URL";echo $?)
if [ "$LC_CODE" -ne 0 ]; then
  echo "Could not find $GITOPS_URL"
  exit 1
fi

, и у меня есть вопрос относительно $(...).

$(...) запускает новую подоболочку. Означает ли это, что он запускает новый поток для выполнения команды, например $(git clone https://"$GIT_USER":"$GIT_AT"@"$CHARTS_URL";echo $?), или оболочка запускает код всегда последовательно?

1 Ответ

1 голос
/ 05 августа 2020

Когда вы используете $(...), будет создана новая под-оболочка, но родительская оболочка будет ждать завершения под-оболочки. Эффективное выполнение кода последовательно.

Примечание: здесь нет необходимости использовать подстановку процесса. Рассмотрим альтернативу:

echo "Clone CHARTS repo"
if ! git clone https://"$GIT_USER":"$GIT_AT"@"$CHARTS_URL" ; then 
  echo "Could not find $CHARTS_URL"
  exit 1
fi

Что позволит избежать явной под-оболочки.

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