次のようなbashスクリプト「build.sh」があります。
# load Xilinx environment settings
source $XILINX/../settings32.sh
cp -r "../../../EDK/platform" "hw_platform"
if [ $# -ne 0 ]; then
cp $1/system.xml hw_platform/system.xml
fi
echo "Done"
通常、「./build.sh」として実行し、「source」ステートメントを実行して環境変数を正しく設定します。スクリプトに別の場所からファイルをコピーさせる必要がある場合があります。「./build.sh ~/alternative_path/」として実行します。私のスクリプトは、$# を 0 に対してチェックすることで、cmd ライン引数があるかどうかをチェックします。
私がそうすると、スクリプトの先頭にある「ソース」ステートメントがどういうわけかスキップされ、ビルドが失敗しました。「ソース」の前後に 2 つの「エコー」を配置すると、エコー ステートメントが実行されることがわかります。
現在、「source $XILINX/../settings32.sh; build.sh」でこの問題を回避しています。ただし、スクリプトで間違ったことを教えてください。ありがとう。