これをするのに私はスクリプトでファンクションを書いていましたが
それをそれぞれ一行でやってのけている人で出会うことがあります。
そこをチマチマ実装して実装とデバッグの時間使っちゃってたなー
と思うことが
最近あったのでメモをしておきます
まずはどういうことかコードを見てみましょう
この辺のsedなどが使いこなせる、感はエンジニアとしては非常に役にたつ知識でしょう。
次、これ使いましょう
git clone --depth=1 --branch master xxxxx.git git rev-parse HEAD export MISO_DIR=${MISO_DIR:-${DEFAULT_HOME}/test} NAME_WO_EXT=$(echo "$SCRIPT_NAME" | cut -f 1 -d '.') yesterday=$(date --date '--60 hours' +%Y-%m-%d) yesterday_arbitrary_format=$(date --date '--36 hours' '+yyyy=%Y/MM=%m/day_of_month=%d') one_liner_regex=$(sed -e 's:.*/yyyy=\([0-9]\+\)/MM=\([0-9]\+\)/day_of_month=\([0-9]\+\):\1-\2-\3:' a_file.txt)
たくさん
普段私が使わない技が詰まっています。
git clone with option や git rev-parse HEADってなんや
とか
cutしてたらり bash変数のdefault置き換え
date関数の呼び出しもエレガントだし
一番驚いたのは、
$(date --date '--36 hours' '+yyyy=%Y/MM=%m/day_of_month=%d')
こういう柔軟さね
あとは
これね
sedをちゃんと理解してる っていうか 正規表現がちゃんとわかってるっていうか
よくある yyyy=2019/MM=09/day_of_month=03のようなフォルダパスから sedでうまく抽出してんじゃん
one_liner_regex=$(sed -e 's:.*/yyyy=\([0-9]\+\)/MM=\([0-9]\+\)/dd=\([0-9]\+\):\1-\2-\3:' a_file.txt)
あと
set -e set +e
なんか初めてみましたけど!
どうやら 状態の解除らしいです https://journal.lampetty.net/entry/wp/444
良い技は盗み、be lazy, be good programmer
以上です