予期しない "(" - シェル スクリプトは CentOS の bash では動作しますが、Ubuntu では動作しません

予期しない "(" - シェル スクリプトは CentOS の bash では動作しますが、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 実装によって実行されます。Ubuntu では、これは bash ではなく dash です。dash は配列をサポートしていません。

関連情報