次のスクリプトがあります。
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です。ダッシュは配列をサポートしません。