इसलिए, मैंने अपना होम फोल्डर (या, अधिक सटीक रूप से, उन सभी फाइलों को डिलीट कर दिया है, जिनकी पहुंच मैंने लिखी थी)। जो हुआ वो मेरे पास था
build="build"
...
rm -rf "${build}/"*
...
<do other things with $build>
एक बैश स्क्रिप्ट में और, अब आवश्यकता के बाद $build
, घोषणा और उसके सभी उपयोगों को हटाने - लेकिन rm
। बैश खुशी से फैलता है rm -rf /*
। हाँ।
मैंने बेवकूफ महसूस किया, बैकअप स्थापित किया, जो काम मैंने खो दिया, उसे फिर से किया। शर्म से अतीत को आगे बढ़ाने की कोशिश की जा रही है।
अब, मुझे आश्चर्य है: ऐसी तकनीकें जो बैश स्क्रिप्ट लिखने के लिए हैं ताकि ऐसी गलतियाँ न हो सकें, या कम से कम संभावना हो? उदाहरण के लिए, मैंने लिखा था
FileUtils.rm_rf("#{build}/*")
रूबी लिपि में, दुभाषिया build
ने घोषित नहीं होने के बारे में शिकायत की होगी , इसलिए वहां भाषा मेरी रक्षा करती है।
मैंने बैश में विचार किया है, इसके अलावा कोरिलिंग rm
(जो संबंधित प्रश्नों के कई उत्तरों का उल्लेख करता है, अप्रमाणिक नहीं है):
rm -rf "./${build}/"*
इसने मेरे वर्तमान कार्य (एक Git रेपो) को मार दिया होगा लेकिन कुछ और नहीं।rm
वर्तमान निर्देशिका के बाहर कार्य करते समय उस के एक प्रकार / परिमाणीकरण को सहभागिता की आवश्यकता होती है। (कोई भी नहीं मिल सका।) समान प्रभाव।
क्या यह है, या इस अर्थ में "मजबूत" हैं बैश स्क्रिप्ट लिखने के अन्य तरीके हैं?
set -u
के रूप में लगभग के रूप में frowned नहीं set -e
है, लेकिन यह अभी भी अपने gotchas है।
#! /usr/bin/env ruby
हर खोल स्क्रिप्ट के शीर्ष पर रखा और बैश के बारे में भूल;)
rm -rf "${build}/*
, भले ही वह उद्धरण चिह्न जाना।rm -rf "${build}
की वजह से एक ही काम करेंगेf
।