2013-11-27 26 views
7

tôi đang chạy ứng dụng của mình trong linux bằng cách cung cấp đầu vào làm dòng lệnh. Trường nhập của tôi chứa đối số chứa ";" (dấu chấm phẩy) trong nội bộ. (Ví dụ: 123; 434; 5464). Điều này sẽ được phân tích cú pháp bằng cách sử dụng mã hóa UTF8String và gửi. Nhưng khi tôi đang sử dụng như thế này, bản thân nó ban đầu tôi đang nhận được,Dấu chấm phẩy trên dòng lệnh trong linux

bash: 434: command not found 
bash: 5464: command not found 

Và khi tôi capture lưu lượng đầu ra chỉ chứa 123 thay vì 123; 434; 5464 Nhưng nếu tôi đưa ra mà không cần dấu chấm phẩy (Ex: 123 : 434: 5464), không nhận được bất kỳ đầu ra nào phát sinh đúng cách như 123: 434: 5464

Chỉ cho tôi cách cung cấp đầu vào dòng lệnh bằng cách sử dụng dấu chấm phẩy để xuất đầu ra. Có bất kỳ cú pháp cụ thể để sử dụng trong khi làm với dấu chấm phẩy. Tôi đang chạy như bên dưới

./runASR.sh -ip 10.78.242.4 -port 3868 -sce 10.78.241.206 -id 85;167838865;1385433280 

trong trường -id chứa giá trị đó có vấn đề.

Trả lời

18

; được xử lý cuối lệnh ký tự. Vì vậy, 123;456;5464 để bash thực ra là 3 lệnh. Để vượt qua các ký tự meta đó, hãy thoát nó bằng ký tự thoát \.

./command 123\;456\;5464 

Hoặc Chỉ cần trích dẫn nó với dấu nháy đơn (double quote evaluates the inner string) (Cảm ơn Triplee, tôi quên đề cập đến này)

./command '123;456;5464' 
+4

Hoặc trích dẫn nó. 'lệnh '123; 456; 5464'' – tripleee

+1

Dấu ngoặc kép sẽ thực sự hoạt động tốt ở đây (nhưng dấu nháy đơn nói chung là tốt hơn); bạn lo lắng về các ký hiệu '$' và dấu kiểm ngược trong dấu ngoặc kép. –

Các vấn đề liên quan