मेरे पास एक बश लिपि है जिससे मैं तारीख के साथ एक निर्देशिका बनाना चाहता हूं और हर बूट का उपयोग करने की तारीख पर एक वृद्धिशील संख्या
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। यह "आप जो चाहते हैं वही करें, लेकिन यह गारंटी देगा कि आपकी निर्देशिका के नाम अद्वितीय होंगे और आप किसी भी प्रकार की दौड़ स्थितियों में भाग नहीं लेंगे।