日付コマンドを変数に渡しますか?

日付コマンドを変数に渡しますか?

さて、私の質問は次のとおりです。この質問に合格したい。

echo $(($(date +%s%N)/1000000))

これは、次のように変数 "a" に追加できます。

a=$(($(date +%s%N)/1000000))

これを行う理由は、4つの乱数(Random Number)を使いたいからです。例を示すために、このbashスクリプトを作成しました。

#!/bin/bash
for (( c=0; c<=10; c++))
do
        echo $(($(date +%s%N)/1000000))
        sleep .5
done

出力: - (最初の9桁を無視)

1622001937610
1622001938249
1622001938758
1622001939267
1622001939774
1622001940282
1622001940790
1622001941299
1622001941807
1622001942315
1622001942823

これで、インスタンスの1つの結果を最後の9桁からインデックス付けされた配列に追加して、ナノ秒の時間に基づいて4つの乱数を受け取ろうとします。

しかし、結果を得るためにbashで使用される構文を完全に理解していないようです。date +%s%N)/1000000配列を直接呼び出すことはできますか?私の考えは、配列を作成して空にしてから結果を配列に追加し、9番目の数字からインデックス付けを開始することです。その結果を私が処理できる2番目の変数に渡します。

結果をdate +%s%N)/1000000変数に変換する方法を学ぶだけでも多くの助けになります。

痛みをおかけして申し訳ありません。よろしくお願いします。

ベストアンサー1

私の最初のアプローチは、出力で文字列操作を使用してdate目的の値を取得することでした。ここでは、数学(1000000モジュールで10000に分割)を使用していますが、コメントに代替を残しました。

#!/bin/bash
items=()

random=$(( ($(date +%s%N) / 1000000) % 10000 ))        # Second and milliseconds
# random=$( date +%s%N | grep -oP '....(?=......$)' )

items+=($random)                                       # Append value to array

echo "${items[0]}"                                     # First array value
echo "${items[-1]}"                                    # Last (most recently appended) value
declare -p items                                       # Visual inspection of array elements

おすすめ記事