bash में increment निर्देशिका नाम - linux, bash, date

मेरे पास एक बश लिपि है जिससे मैं तारीख के साथ एक निर्देशिका बनाना चाहता हूं और हर बूट का उपयोग करने की तारीख पर एक वृद्धिशील संख्या

 DATE=$(date +"%d%m%Y")

मैं 300514-1 के उत्पादन की तरह है, तो एक रिबूट 300514-2 के बाद और इतने पर, लेकिन फ़ाइलों को उस निर्देशिका में संग्रहीत करने की आवश्यकता है जो कि बनाई गई थी अर्थात

SAVEDIR=/home/files/$DATE-*

उत्तर:

उत्तर № 1 के लिए 4

आप निम्न स्क्रिप्ट का उपयोग कर सकते हैं:

#!/bin/bash

DATE=$(date +"%d%m%Y")
N=1

# Increment $N as long as a directory with that name exists
while [[ -d "/home/files/$DATE-$N" ]] ; do
N=$(($N+1))
done

mkdir "/home/files/$DATE-$N"

ध्यान दें कि स्क्रिप्ट दौड़ की स्थितियों के विरुद्ध सुरक्षित नहीं है, जिसका अर्थ है कि आप इसे ऐसे वातावरण में उपयोग नहीं कर सकते जहाँ कई समवर्ती प्रक्रियाएँ एक ही समय में स्क्रिप्ट को बुला रही हों।


जवाब के लिए 0 № 2

पर एक नज़र डालें mktemp। यह "आप जो चाहते हैं वही करें, लेकिन यह गारंटी देगा कि आपकी निर्देशिका के नाम अद्वितीय होंगे और आप किसी भी प्रकार की दौड़ स्थितियों में भाग नहीं लेंगे।