Неожиданный "(" - Скрипт оболочки работает на CentOS с bash, но не на Ubuntu

Неожиданный "(" - Скрипт оболочки работает на CentOS с bash, но не на Ubuntu

У меня есть следующий скрипт:

names=($(python3 script.py -p "$GIT_PREVIOUS_COMMIT" -c "$GIT_COMMIT" | tr -d '[],'))

Он работает на машине Centos 6 с bash 4.1.2(2), но при попытке выполнить его на Ubuntu я получаю:

bashfile.sh: 1: bashfile.sh: Syntax error: "(" unexpected

решение1

Этот скрипт работает на bash 4.3.48. Проблема в том, что вы не запускаете его с bash. В нем отсутствуетпритонлиния вверху.

#!/bin/bash
names=($(python3 script.py -p "$GIT_PREVIOUS_COMMIT" -c "$GIT_COMMIT" | tr -d '[],'))

Без строки shebang скрипт выполняется реализацией sh по умолчанию. В Ubuntu это не bash, а dash. Dash не поддерживает массивы.

Связанный контент