2012-02-28 37 views
19

Tôi cần chuyển dữ liệu nhị phân sang chương trình bash chấp nhận đối số dòng lệnh. Có cách nào để làm việc này không?Chuyển dữ liệu nhị phân làm đối số trong bash

Đó là một chương trình mà chấp nhận một đối số:

script arg1 

Nhưng thay vì chuỗi arg1, tôi muốn vượt qua một số byte mà không phải là các ký tự ASCII tốt - đặc biệt là các byte 0x02, 0xc50xd8.

Làm cách nào để thực hiện việc này?

Trả lời

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

kiểm tra:

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

Tôi tin rằng bài kiểm tra của bạn tương đương với 'echo -ne' \ x02 \ xc5 \ xd8 'đơn giản hơn | hexdump -C' :-) – elimisteve

+2

Không hoàn toàn ... ở đây tôi đang cố gắng mô phỏng cuộc gọi thực tế của 'script', bằng cách thay thế nó bằng' echo -n' –

0

Làm thế nào về điều này?

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

bạn không muốn bash để xử lý các tranh luận ... 'kịch bản "\ 'printf "\ x02 \ xc5 \ xd8" \'"' –

+0

@yi_H Tốt điểm . Sửa lỗi được áp dụng, dẫn trực tiếp đến câu trả lời của bạn :) –

-1

Lưu dữ liệu nhị phân của bạn vào một tập tin, sau đó làm:

script "`cat file`" 
+0

@downvoter: có gì sai với câu trả lời này? –

+0

UUOC. Làm thế nào về kịch bản $ ( jordanm

+0

Tôi đã không downvote nhưng nhìn thấy bình luận của tôi tại một câu trả lời khác –

5

Bash là không giỏi đối phó với dữ liệu nhị phân. Tôi sẽ khuyên bạn nên sử dụng base64 để mã hóa nó, và sau đó giải mã nó bên trong của kịch bản.

Edited để cung cấp một ví dụ:

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

Bên trong kịch bản:

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

Đồng ý. Tôi đã không tìm thấy bất kỳ cách nào để có được bash để đối phó với số không byte (\ x00) trong chuỗi, và nó có xu hướng thêm/loại bỏ traillines newlines (\ x0a) như nó nghĩ tốt nhất - cả hai đều khá xấu khi giao dịch với nhị phân tùy ý dữ liệu. –

17

Sử dụng phong cách $'' quote:

script $'\x02\xc5\xd8' 

Test:

printf $'\x02\xc5\xd8' | hexdump -C 
00000000 02 c5 d8 
Các vấn đề liên quan