2012-12-05 13 views
7

मेरे पास एक बैश शुरुआती समस्या है:
मेरा मार्ग बनाने के लिए /Volumes/ADATA\ UFD/Programming/Qt है, जहां /Volumes/ADATA\ UFD पहले से मौजूद है। मैं निम्नलिखित रूप में एक पटकथा लिखने के लिए करना चाहते हैं:रिक्त स्थान वाले पथ के साथ mkdir कैसे करें?

# create a single output directory 
outputdir="/Volumes/ADATA\ UFD/Programming/Qt" 
mkdir -pv $outputdir 

मेरे समस्या यह है कि mkdir निर्देशिका /Volumes/ADATA और बदले /Volumes/ADATA\ UFD/Programming/Qt बनाने की ./UFD/Programming बनाता है।

मैंने this question on SO पर देखा है; हालांकि, इनमें से कोई भी समाधान काम नहीं करता:

outputdir=/Volumes/"ADATA\ UFD/Programming/Qt" 
mkdir -pv $outputdir 

outputdir=/Volumes/'ADATA\ UFD/Programming/Qt' 
mkdir -pv $outputdir 

outputdir='/Volumes/ADATA\ UFD/Programming/Qt' 
mkdir -pv $outputdir 

outputdir=/Volumes/ADATA' 'UFD/Programming/Qt 
mkdir -pv $outputdir 

मैं क्या गलत कर रहा हूं? यहाँ अच्छा संयोजन क्या है?

+1

एक फ़ाइल नाम में एक बैकस्लैश लाना भ्रम और दु: ख का कारण बन रहा है। हर कीमत पर इससे बचें। –

उत्तर

12

जब आप उन्हें इस्तेमाल चर उद्धृत करने के लिए की जरूरत है। विस्तारित चर शब्दकोष से गुजरते हैं। हमेशा अपने विस्तार को उद्धृत करना अच्छा अभ्यास है, इस पर ध्यान दिए बिना कि आप विशेष पात्रों या रिक्त स्थान रखने की उम्मीद करते हैं या नहीं। उद्धरण देते समय आपको रिक्त स्थान से बचने की भी आवश्यकता नहीं है।

निम्नलिखित तुम क्या चाहते हो जाएगा:

outputdir='/Volumes/ADATA UFD/Programming/Qt' 
mkdir -pv "$outputdir" 
11

चर को दोहरे उद्धरण चिह्नों जब mkdir आदेश को पारित किया गया:

mkdir -pv "$outputdir" 
+0

उनके परिवर्तनीय असाइनमेंट भी गलत हैं, क्योंकि परिणामस्वरूप फ़ाइल नाम में एक शाब्दिक '\' होगा। – jordanm

+0

चूंकि वह कहता है कि वह नाम में बैकस्लैश चाहता है, वह _can_ ऐसा करता है, हालांकि वह शायद इसे नहीं करेगा। मैंने ध्यान दिया कि मेरे जवाब के बजाय सवाल पर टिप्पणी में, हालांकि। –

संबंधित मुद्दे