在linux的命令行上的分号

ram*_*nam 12 linux bash shell

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

 bash: 434: command not found
 bash: 5464: command not found
Run Code Online (Sandbox Code Playgroud)

当我捕获流量时,输出仅包含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
Run Code Online (Sandbox Code Playgroud)

其中-id字段包含有问题的值.

Shi*_*dim 30

;被视为命令结束字符.所以123;456;5464bash实际上是3个命令.要传递这样的元字符,请使用转义字符将其转义\.

./command 123\;456\;5464
Run Code Online (Sandbox Code Playgroud)

或者只用单引号引用它(双引号评估内部字符串)(谢谢Triplee,我忘了提到这个)

./command '123;456;5464'
Run Code Online (Sandbox Code Playgroud)

  • 双引号实际上在这里工作正常(但单引号通常更好); 你担心双引号内的`$`和反滴答符号. (2认同)