예기치 않은 "(" - 쉘 스크립트는 bash를 사용하는 CentOS에서는 작동하지만 Ubuntu에서는 작동하지 않습니다.

예기치 않은 "(" - 쉘 스크립트는 bash를 사용하는 CentOS에서는 작동하지만 Ubuntu에서는 작동하지 않습니다.

다음 스크립트가 있습니다.

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

bash 4.1.2(2)가 설치된 Centos 6 시스템에서 작동하지만 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 구현에 의해 실행됩니다. 우분투에서는 bash가 아니라 dash입니다. 대시는 배열을 지원하지 않습니다.

관련 정보