私は多数のビデオを通して優れたシェルスクリプトコースを見てきました。Bourneシェルにかなり精通していると思うので、最初のシェルスクリプトを作成することにしました。
スクリプトの目標:gitの作業ディレクトリがクリーンかどうかを確認します。その場合は、作業ディレクトリを。という名前のブランチに上書きしますdeployment
。最後に、デプロイメントブランチをオリジンにプッシュします。
私はこのコードで終わった:
#!/bin/sh
######################################################
# Deploys working directory to git deployment branch.
# Requires that the working directory is clean.
######################################################
#check if the working directory is clean
if [ git diff-index --quiet HEAD ]
then
if [ git branch -f deployment ]
then
if [ git push origin deployment ]
then
echo
echo "OK. Successfully deployed to git deployment branch."
echo
exit 0 #success
else
echo
echo "Error: failed to push deployment branch to origin."
echo
exit 1 #failure
fi
else
echo
echo "Error: failed to create or overwrite deployment branch."
echo
exit 1 #failure
fi
else
echo
git status #show the status of the working directory
echo
echo "Error: working directory is not clean. Commit your changes first..."
echo
exit 1 #failure
fi
残念ながら、これは私にエラーを与えるようです:./tools/deploygit: 9: [: git: unexpected operator
なんでそうなの?その中で私が使用しif [ git diff-index --quiet HEAD ]
ている演算子は予期しないものですか?
ボーナスとして、このスクリプトの効率、ロジック、または読みやすさを改善する方法についての提案やヒントはありますか?