さて、私の質問は次のとおりです。この質問に合格したい。
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