在Java中传递制表符作为命令行参数
这个问题在这里已经有了答案:
您在代码中定义的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
在第一个参数中解释反斜线转义的字符。
上一篇: Passing a tab character as a command line argument in Java
下一篇: A separate loop slows down an independent earlier loop?