
次のスクリプトがあります:
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 は配列をサポートしていません。