যদি কেউ ছাড়া অন্য শেল ব্যবহার করছে bash
, ksh93
এবং zsh
একটি ফ্লোটিং পয়েন্ট আছে $SECONDS
পরিবর্তনশীল আপনি একটি কি typeset -F SECONDS
যা সঠিকতা সঙ্গে সময় পরিমাপ করতে কুশলী হতে পারে:
$ typeset -F SECONDS=0
$ do-something
something done
$ echo "$SECONDS seconds have elapsed"
18.3994340000 seconds have elapsed
সংস্করণ ৪.৩.১৩ (২০১১) মডিউলে zsh
একটি $EPOCHREALTIME
বিশেষ ভাসমান পয়েন্ট পরিবর্তনশীল zsh/datetime
:
$ zmodload zsh/datetime
$ echo $EPOCHREALTIME
1364401642.2725396156
$ printf '%d\n' $((EPOCHREALTIME*1000))
1364401755993
লক্ষ্য করুন দ্বারা ফিরে (সেকেন্ড এবং ন্যানোসেকেন্ড জন্য) দুটি পূর্ণসংখ্যার থেকে উদ্ভূত যে clock_gettime()
। বেশিরভাগ সিস্টেমে এটি একক সি double
ভাসমান পয়েন্ট সংখ্যাটি ধরে রাখতে পারে তার চেয়ে বেশি নির্ভুলতা , সুতরাং আপনি যখন অঙ্কটি গাণিতিক এক্সপ্রেশনগুলিতে ব্যবহার করবেন তখন আপনি যথার্থতা হারাবেন (1970 এর প্রথম কয়েক মাসের তারিখ বাদে)।
$ t=$EPOCHREALTIME
$ echo $t $((t))
1568473231.6078064442 1568473231.6078064
উচ্চ নির্ভুলতার সময়ের পার্থক্য গণনা করতে (যদিও আমি সন্দেহ করি যে আপনার মিলিসেকেন্ডের নির্ভুলতার চেয়ে আরও বেশি প্রয়োজন হবে), আপনি এর $epochtime
পরিবর্তে বিশেষ অ্যারেটি ব্যবহার করতে চাইতে পারেন (এতে সেকেন্ড এবং ন্যানোসেকেন্ড দুটি পৃথক উপাদান হিসাবে রয়েছে)।
সংস্করণ ৫.7 (2018) থেকে strftime
শেল বিল্টিন একটি %N
ন্যানোসেকেন্ডের ফর্ম্যাট à la GNU date
এবং %.
নির্ভুলতা নির্দিষ্ট করতে একটি সমর্থন করে , তাই যুগের পর থেকে মিলিসেকেন্ডের সংখ্যাটিও এর সাথে পুনরুদ্ধার করা যেতে পারে:
zmodload zsh/datetime
strftime %s%3. $epochtime
(অথবা এর সাথে একটি ভেরিয়েবলে সঞ্চিত -s var
)