Unerwartetes "(" - Shell-Skript funktioniert auf CentOS mit Bash, aber nicht auf Ubuntu

Unerwartetes "(" - Shell-Skript funktioniert auf CentOS mit Bash, aber nicht auf Ubuntu

Ich habe folgendes Skript:

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

Es funktioniert auf einer Centos 6-Maschine mit Bash 4.1.2(2), aber beim Versuch der Ausführung unter Ubuntu erhalte ich:

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

Antwort1

Dieses Skript funktioniert unter Bash 4.3.48. Das Problem ist, dass Sie es nicht mit Bash ausführen. Es fehlt einsiebangZeile oben.

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

Ohne eine Shebang-Zeile wird das Skript von der Standard-SH-Implementierung ausgeführt. Unter Ubuntu ist das nicht Bash, sondern Dash. Dash unterstützt keine Arrays.

verwandte Informationen