2013-11-27 97 views
7

我通过提供输入作为命令行来运行我的应用程序。我的输入字段包含一个内部包含“;”(分号)的参数(例如:123; 434; 5464)。 这将使用UTF8String编码和发送进行解析。 但是,当我使用这样的,在最初的本身我得到,在Linux命令行中使用分号

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

当我捕捉流量输出只包含123而不是123; 434; 5464 但是,如果我给没有分号(例如:123 :434:5464),没有得到任何问题输出正确地作为123:434:5464

指向我如何通过使用分号输入命令行输入。使用分号时有没有特别的语法可供使用? 我正在像下面

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

其中-id字段包含有问题该值。

回答

18

;被视为结束命令字符。所以123;456;5464 bash实际上是3个命令。要传递这些元字符,请使用转义字符\进行转义。

./command 123\;456\;5464 

或只是单引号(double quote evaluates the inner string)引用它(感谢Triplee,我忘了提及这一点)

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

或引用它。 '命令'123; 456; 5464'' – tripleee

+1

双引号实际上可以在这里正常工作(但单引号通常更好);你担心'$'和双引号内的反标符号。 –