0

時間オプション引数を取る az シェル スクリプトを作成しました。(例: --time 00:03:30)。HH:MM:SS 以外の形式で時刻を入力できるようにしてほしい。私のスクリプトは既に HH:MM:SS を秒単位に変換できます (これは最終結果が必要とするものです) が、HH:MM:SS 形式は扱いにくいです。そこで、別の形式 (#h#m#s) を元の形式に変換する関数を作成しました。

    if [ "$(echo "$1" | grep -E "([[:digit:]]+[hms]|[[:digit:]]+[hms][[:digit:]]+[hms]|[[:digit:]]+[hms][[:digit:]]+[hms][[:digit:]]+[hms])")" ]; then
        if [ "$(echo "$1" | grep "h")" ]; then
            H="$(echo "$1" | sed -E 's|.*([[:digit:]]+)h.*|\1|')"
        else
            H=00
        fi
        if [ "$(echo "$1" | grep "m")" ]; then
            M="$(echo "$1" | sed -E 's|.*([[:digit:]]+)m.*|\1|')"
        else
            M=00
        fi  
        if [ "$(echo "$1" | grep "s")" ]; then
            S="$(echo "$1" | sed -E 's|.*([[:digit:]]+)s.*|\1|')"
            else
            S=00
        fi
        echo "$H:$M:$S" | sed -Ee 's|:([[:digit:]]):|:0\1:|' -e 's|^([[:digit:]]):|0\1:|' -e 's|:([[:digit:]])$|:0\1|'
    fi

はい、独自のソリューションを作成しました。私はより良いものを見つけるためにここに来ました。また、秒に変換できる他の形式を知っている場合は、お知らせください。

4

1 に答える 1

0

これは、あなたの望むことですか?

% zmodload zsh/datetime
% echo $(( $(strftime -r '%H:%M:%S' 01:01:12) - $(strftime -r '%H:%M:%S' 0:0:0) ))
3672
于 2012-10-03T10:33:07.707 に答える