2017-09-27 10 views
0

したがって、電話に関する詳細をファイルに書き込むスクリプトを作成する必要があります。ファイルには、0742,043、0744で始まる -CALLING_NUMBER - >、残りの数字はランダムに生成されます(合計10個)DATEをbashで操作する

-CALLED_NUMBER - >は07で始まり、残りは数字もランダムです

-START_DATE - >電話の開始日をyyyy-mm-dd hh24:mm:ssの形式で指定します。すべての通話の開始日は、同じ日のもので、その日のすべての時間をカバーする必要があります。

END_DATE - 電話の終了日を同じ形式で開始日より大きくする必要があります。ランダム-CALL_TYPE

0から7200の間に余分な秒を生成 - >通話時間が1秒であれば、それは長い場合、それはそれは

VOICE

返し、SMSを返すIやったCALLING_NUMBERとCALLED_NUMBERあなたが終了日と開始日を持つと、CALL_TYPEはかなり単純です。私は開始日と終了日に問題があります。

GNUのbashのバージョン3.2.25(1)-release(x86_64版-のredhat-のlinux-gnuの)

ありがとう!

+0

ためのショートカットとしてバック判読可能な日付/時刻に

  • +"%F %T"書式指定子をUnixタイムスタンプに変換する秒
  • date -d @unix_timestampでの日付計算あなたの質問あなたのOSのバージョンに追加日付コマンドとコーディング作業 – Cyrus

  • +0

    ランダムに生成された 'start_date'が同じ日に必要ですか?その日は固定されているのですか?ランダムであれば、どの範囲ですか? – randomir

    +0

    macOSを使っているのですが、Linuxの場合は 'bash' 3.2と貼り付けることができますか? 10年以上経過していないバージョンにアップグレードする必要があります。 – chepner

    答えて

    1

    これは、特定の日に固定されたランダムstart_dateを生成し、その後、0から7200秒後にそれよりもランダムend_dateます:私たちはここに使用

    #!/bin/bash 
    
    # all start_date's will be on this day 
    start_date_anchor="2017-09-01" 
    # start_date in seconds since Unix epoch 
    start_date_zero=$(date -d "$start_date_anchor" +%s) 
    # random offset in seconds from midnight (note: RANDOM is a 15-bit int) 
    start_date_offset=$((((RANDOM<<15)|RANDOM) % 86400)) 
    # random start_date in "YYYY-MM-DD HH:MM:SS" format 
    start_date=$(date -d @"$((start_date_zero + start_date_offset))" +"%F %T") 
    
    # 0-7200 seconds offset 
    end_date_offset=$((RANDOM % 7200)) 
    # end_date in "YYYY-MM-DD HH:MM:SS" format 
    end_date=$(date -d @"$((start_date_zero + start_date_offset + end_date_offset))" +"%F %T") 
    
    echo "Start date: $start_date" 
    echo "End date: $end_date" 
    

    注:

    • date -d 'some_date' +%ssome_dateをUnixのタイムスタンプ(エポックからの秒数)に変換する
    • bash RANDOM変数。これは、15ビット範囲(0〜3276 7)呼び出される/参照されるたびに。 2つの15ビット整数のビットを組み合わせて、RANDOM<<15 | RANDOMという30ビットのランダムな整数を得ることができます。
    • YYYY-mm-dd HH:MM:SS形式
    関連する問題