2010-02-28 18 views
9

में फ़ाइल का विस्तार कैसे प्राप्त करें मैं खोल स्क्रिप्ट में फ़ाइल के लिए फ़ाइल एक्सटेंशन प्राप्त करने का प्रयास कर रहा हूं। लेकिन बिना किसी किस्मत के।शैल स्क्रिप्ट

आदेश मैं उपयोग कर रहा हूँ

file_ext=${filename##*.} 

और

file_ext = $filename |awk -F . '{if (NF>1) {print $NF}}' 

है लेकिन आदेशों की दोनों चर file_ext में मूल्य डालने के लिए विफल रहा है। लेकिन जब मैं

echo $filename |awk -F . '{if (NF>1) {print $NF}}' 

यह मुझे वांछित परिणाम देता है। मैं खोल स्क्रिप्ट के लिए नया हूँ। क्या हो रहा है स्थिति का वर्णन करें। और मुझे यह कैसे करना चाहिए?

धन्यवाद।

+0

का उपयोग आगे के संदर्भ के लिए, http://tldp.org/LDP/abs/html/ एक बहुत अच्छी जगह है! –

+0

मुझे आश्चर्य है कि पहली शैली क्यों काम करती है। क्या आप कृपया समझा सकते हैं? – xiaohan2012

उत्तर

13

रिक्त स्थान दर्द होता है।

वैसे भी आपको क्या करना चाहिए:

file_ext=$(echo $filename |awk -F . '{if (NF>1) {print $NF}}') 

कि आदेश के उत्पादन में file_ext $ में संग्रहीत करेगा।

+0

हां। विचार $() में आदेश था। आपके उत्तर के लिए धन्यवाद। –

+0

आपका स्वागत है। –

3

चर घोषित करते समय आपको सावधान रहना होगा।

variable1="string" # assign a string value 
variable3=`command` # assign output from command 
variable2=$(command) # assign output from command 

सूचना है कि आप चर के बाद कोई रिक्त स्थान नहीं रख सकते हैं, क्योंकि तब यह एक सामान्य आदेश के रूप में व्याख्या हो जाता है।

+0

धन्यवाद अच्छी तरह से व्याख्या की। :)। मुझे तुम्हारा मुद्दा कभी भी यह गलती नहीं होगी। –

18

फाइल एक्सटेंशन प्राप्त करने के लिए, बस खोल

$ filename="myfile.ext" 
$ echo ${filename##*.} 
ext 
$ file_ext=${filename##*.} #put to variable 
$ echo ${file_ext} 
ext 
+1

हाँ, लेकिन यह क्यों काम करता है? यह '## *। 'वूडू क्या है? – Okonomiyaki3000

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