2012-02-28 19 views
19

में तर्क के रूप में बाइनरी डेटा पास करना मुझे कमांड लाइन तर्कों को स्वीकार करने वाले बैश प्रोग्राम में बाइनरी डेटा पास करने की आवश्यकता है। क्या इसे करने का कोई तरीका है? - विशेष रूप से, बाइट्स 0x02, 0xc5बाश

script arg1 

लेकिन बजाय स्ट्रिंग arg1 की, मैं कुछ बाइट्स है कि अच्छा ASCII वर्ण नहीं हैं पारित करने के लिए करना चाहते हैं:

यह एक प्रोग्राम है जो एक तर्क स्वीकार करता है और 0xd8

मैं यह कैसे कर सकता हूं?

उत्तर

16
script "`printf "\x02\xc5\xd8"`" 
script "`echo -e "\x02\xc5\xd8"`" 

परीक्षण:

# echo -n "`echo -e "\x02\xc5\xd8"`" | hexdump -C 
00000000 02 c5 d8           |...| 
+2

मुझे विश्वास है कि आपका परीक्षण सरल 'echo -ne "\ x02 \ xc5 \ xd8" के बराबर है। हेक्सडम्प-सी' :-) – elimisteve

+2

काफी नहीं ... यहां मैं 'echo -n' के साथ इसे बदलकर 'स्क्रिप्ट' की वास्तविक कॉल अनुकरण करने की कोशिश कर रहा हूं –

0

इस बारे में कैसे?

$ script "`printf "\x02\xc5\xd8"`" 
+3

आप बैश तर्क ... 'स्क्रिप्ट" \ 'printf" \ X02 \ xc5 \ xd8 "\' "कार्रवाई करने के लिए नहीं करना चाहती' –

+0

@yi_H अच्छा बिंदु । लागू करें, जो सीधे आपके उत्तर की ओर जाता है :) –

-1

एक फाइल करने के लिए अपने बाइनरी डेटा सहेजें, फिर उसे कार्य करें:

script "`cat file`" 
+0

@downvoter: इस उत्तर में क्या गलत है? –

+0

यूयूओसी। स्क्रिप्ट $ (<फ़ाइल) या स्क्रिप्ट "$ ( jordanm

+0

मैंने डाउनवोट नहीं किया लेकिन मेरी टिप्पणी को अन्य उत्तर –

5

बैश बाइनरी डेटा के साथ काम कर में अच्छा नहीं है। मैं इसे एन्कोड करने के लिए बेस 64 का उपयोग करने की अनुशंसा करता हूं, और उसके बाद इसे स्क्रिप्ट के अंदर डीकोड करता हूं।

script "$(printf '\x02\xc5\xd8' | base64 -)" 

स्क्रिप्ट के अंदर::

var=$(base64 -d -i <<<"$1") 
+2

सहमत हुए। मुझे तारों में शून्य बाइट्स (\ x00) से निपटने के लिए बाश प्राप्त करने का कोई तरीका नहीं मिला है, और यह पीछे की नई न्यूलाइन (\ x0a) को जोड़ने/निकालने का प्रयास करता है क्योंकि यह सर्वोत्तम लगता है - मनमाना बाइनरी से निपटने पर दोनों काफी खराब हैं डेटा। –

17

$'' उद्धरण शैली का उपयोग करें:

संपादित एक उदाहरण प्रदान करने के लिए

script $'\x02\xc5\xd8' 

टेस्ट:

printf $'\x02\xc5\xd8' | hexdump -C 
00000000 02 c5 d8 
संबंधित मुद्दे