在shell中将换行符作为参数传递

5
该程序接受单个字符作为参数。
./myprog <character>

我该如何在shell中传递\n给我的程序?


1
请使用特定的Shell实现标记问题。 - user2864740
1个回答

14

最简单但不太美观:

./myprog "
"

编辑:仍然是最简单的方法,但我忘了它:

./myprog $'\n'

另一种选择:

./myprog ^M                  # not ^ and M, but the literal LF character
                             # in `bash`, obtained by Ctrl-V, Enter

或者,您可以像这些程序一样自己解析参数。如果您输入 ./myprog "\n",您的代码将接收到长度为两个字符的字符串\n作为其第一个参数 - 查找这样的序列并将其转换为换行符(例如通过将参数传递给您语言中的printf或等效函数,或通过正则表达式替换…)。


./myprog $(echo -e "\n") ./myprog $(printf "\n") 这两个在我的bash中不起作用,但是 ./myprog " " 和 ./myprog $'\n' 能够正常工作。谢谢 - Nouman Tajik
1
@Amadan 那些使用 $( ) 的方法即使加上引号也行不通,因为它会剥离输出中的尾部换行符。反引号也不行,因为它们也会这样做。 - Gordon Davisson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接