在Java中传递制表符作为命令行参数

这个问题在这里已经有了答案:

  • 如何在Java中使用Java字符串文字? 10个答案

  • 您在代码中定义的tab是单字符字符串(因为“ t”是转义序列)。 在命令行中,您会得到一个两个字符的字符串,因为bash不会将“ t”作为制表符处理。

    要从命令行传递它,可以使用echo -e ,它支持t (或n等几种)转义序列:

    $ java Main "$(echo -en 't')"
    

    如果您传递't'"t"命令行上,它会导致一个反斜杠后跟一个t要传递给你的命令:

    $ echo -n 't' | xxd
    00000000: 5c74                                     t
    
    $ echo -n "t" | xxd
    00000000: 5c74                                     t
    

    你可以在你的命令行上使用Ctrl-V键然后Tab键输入一个标签:

    $ echo -n '     ' | xxd
    00000000: 09                                       .
    

    (这个宽空格是一个制表符,不是很多空格)。


    要将选项卡作为bash的参数传递,可以执行以下任何操作:

    mycommand $'argtcontainingttabs'
    这是因为bash中的$''解释了转义序列。

    mycommand 'arg containing ctrl-vtab tabs' mycommand 'arg ctrl-vtab tabs'
    这是可行的,因为ctrl-v导致下一个输入的字符被直接插入而不是被解释。

    mycommand "$(printf 'argtcontainingttabs')"
    这在bash和其他shell中起作用,因为printf在第一个参数中解释反斜线转义的字符。

    链接地址: http://www.djcxy.com/p/93895.html

    上一篇: Passing a tab character as a command line argument in Java

    下一篇: A separate loop slows down an independent earlier loop?