2009-05-08 11 views
13

में सभी कमांड लाइन तर्कों को स्टोर करने की तरह सभी मानें कि मेरे पास foo.sh नामक एक बैश स्क्रिप्ट है।एक कम वैरिएबल

मैं इसे इस

foo.sh Here is a bunch of stuff on the command-line 

की तरह कॉल करना चाहते हैं और मैं इसे एक एकल चर में है कि पाठ के सभी स्टोर और इसे बाहर प्रिंट करना चाहते हैं।

तो मेरी उत्पादन होगा:

Here is a bunch of stuff on the command-line 

मैं यह कैसे करना होगा?

उत्तर

27
echo "$*" 

आप क्या चाहते हैं, अर्थात् पूरे कमांड लाइन तर्क, एक अंतरिक्ष (या, तकनीकी रूप से, जो कुछ भी $IFS का मूल्य है) द्वारा अलग प्रिंट करना होगा। आप एक चर में संग्रहीत करने के लिए चाहते हैं तो आपके

thevar="$*" 

कर सकता है कि आपके सवाल काफी अच्छी तरह से उत्तर नहीं मिलता है, मैं और क्या कहने के लिए यकीन नहीं है ...

0

एक नज़र $* चर पर। यह सभी कमांड लाइन तर्कों को एक में जोड़ती है।

echo "$*" 

यह वही करना चाहिए जो आप चाहते हैं।

More info here.

24

आप $ आईएफएस शामिल, उपयोग $ @ होने से बचना चाहते हैं (या उद्धरण में संलग्न नहीं है $ *)

$ cat atsplat 
IFS="_" 
echo "  at: [email protected]" 
echo " splat: $*" 
echo "noquote: "$* 

$ ./atsplat this is a test 
    at: this is a test 
    splat: this_is_a_test 
noquote: this is a test 

आईएफएस व्यवहार चर असाइनमेंट भी पालन करता है।

$ cat atsplat2 
IFS="_" 
[email protected] 
splatvar=$* 
echo "  at: $atvar" 
echo " splat: $splatvar" 
echo "noquote: "$splatvar 

$ ./atsplat2 this is a test 
    at: this is a test 
    splat: this_is_a_test 
noquote: this is a test 

ध्यान दें कि यदि $ आईएफएस के लिए काम $ splatvar का काम, के बाद किए गए थे तो सभी outputs ही होगा ($ आईएफएस "atsplat2" उदाहरण में कोई असर नहीं होगा)।

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