Ваше сообщение об ошибке:
/home/runner/work/_temp/9c99fa0d-20da-49ed-a0af-322f274c13ac.sh: line 1: [refs/heads/develop: No such file or directory
Он пытается выполнить [refs/heads/develop
и терпит неудачу. Причина root в том, что вам не хватает места между скобкой и тестом. Вы хотите:
if [ "${{ github.ref }}" == "refs/heads/develop" ]; then
(И то же самое в строке 5.)
Это потому, что if
в оболочках bourne на самом деле запускает команду , которую он оценивает. Хотя похоже, что он оценивает выражение, на самом деле он передает выражение команде с именем [
.
% ls -Flas /bin/\[
8 -rwxr-xr-x 1 root wheel 22704 May 4 2019 /bin/[*
Это часто является символической ссылкой (или жесткой ссылкой) на /bin/test
, а в некоторых оболочках например, bash и zsh, [
будет фактически встроенной оболочкой:
% which '['
[: shell built-in command
Но он по-прежнему ведет себя как команда, и синтаксически ему нужно пространство. Потому что:
if [ true ]; then ...
Запускает команду [
(или встроенную в оболочку) для оценки команды /bin/true
. И
if [true ]; then ...
Пытается выполнить несуществующую команду [true
.