【问题标题】:Semicolon on command line in linuxlinux命令行中的分号
【发布时间】:2013-11-27 12:55:01
【问题描述】:

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

 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 字段包含有问题的值。

【问题讨论】:

    标签: linux bash shell


    【解决方案1】:

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

    ./command 123\;456\;5464
    

    或者用单引号 (double quote evaluates the inner string) 引用它(谢谢 Triplee,我忘了提这个)

    ./command '123;456;5464'
    

    【讨论】:

    • 双引号在这里实际上可以正常工作(但单引号通常更好);你担心$ 和双引号内的反引号。
    • 后面的命令是不是要等到前面的命令完成才能执行?
    • @weefwefwqg3 ;后面的命令直到;左边的命令执行完成后才会执行。
    猜你喜欢
    • 2018-11-15
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    相关资源
    最近更新 更多