gitコマンドがめんどくさいからシェルを作った
KEN 2020-05-05 gitMacbookAir
# 概要
なんとかして作業効率向上を図りたいシリーズ。
gitで記事を管理しはじめたのはよいのだけれども、記事の投稿に至るまでがなかなか遠い。
何度も同じコマンドを叩くならシェルを書けばいいということを会社で学んだので、作ってみる。
# 作りたいもの
最低限欲しいなと思った機能は次のとおり
git status
,git add
,git commit
,git push
を実行したい- 引数でコミットコメントを渡したい
- 引数はコメントだけにしたいので、ミス防止のチェックを入れたい
git add
する前に確認する[y/n]を入れたい
その他のエラーは度外視...しちゃう
# できあがったもの
とりあえずの現状結果としてはこんな感じです。
#!/bin/bash
if [ $# -ne 1 ]; then # (1)引数の数チェック
echo 'Require one argument.'
exit 1
fi
var=$1
# (2)コマンドを変数へ
STATUS="git status"
ADD="git add -A"
COMMIT="git commit -a -m '${var}'"
PUSH="git push"
# (3)コマンドの実行
git status
echo -e "COMMAND : ${COMMIT}" # (4)入力コマンドの確認
read -p 'git add, commit and push run. OK? [y/n]:' YN # (5)確認メッセージ
if [ "${YN}" = "y" ]; then
echo '------ script start ------'
echo ${ADD}
eval ${ADD}
echo ${COMMIT}
eval ${COMMIT}
echo ${PUSH}
eval ${PUSH}
echo '------ script end --------'
else
echo 'Command has canceled.'
exit 1;
fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# つまずいたところ
# 引数で渡すコメントの解釈
git commit
時にコメントするとき、引数内に複数の文字列があるとそれぞれが別の引数として渡されてしまうため、引数多すぎのエラーになってしまう。
って、調べてみたらeval
コマンドを使うのが良いと見たので使ってみた。
もう少しちゃんと挙動を調べないといけないなぁ。
# evalコマンド
ここによると、こういうコマンドらしい。
「eval」コマンドは、指定した文字列を評価後に連結して、現在のシェルに実行させます。主にシェルスクリプトや環境設定用のファイルで使用します
なるほどまさに使おうとしていた用途で合っていたという感じらしいです。
# メモ
- 英文は適当
- プッシュまでしちゃうのはやや暴挙かもしれない(自分だけのリポジトリだからいいけど)
- 文法で何度もエラーになった。スペースの扱いが厳しい
- 有事対応を入れないと後で事故になったら...と思うけどgitだしいいや感もある