How to insert a new line in Linux shell script?
我想在多个echo语句之间插入一行新行。我试过echo"hello
",但没有用。正在打印
。我想要这样的输出:
1 2 3
| Create the snapshots
Snapshot created |
在echo语句之间插入新行的最简单方法是不带参数地插入echo,例如:
1 2 3
| echo Create the snapshots
echo
echo Snapshot created |
也就是说,没有任何参数的echo将打印一个空行。
使用带有-e标志和嵌入换行符
的单个echo语句的另一种选择:
1 2 3
| echo -e"Create the snapshots
Snapshot created" |
但是,这是不可移植的,因为-e标志在所有系统中都不能始终如一地工作。如果您真的想这样做,一个更好的方法是使用printf:
1 2 3 4
| printf"Create the snapshots
Snapshot created
" |
这在许多系统中更可靠地工作,尽管它不符合POSIX。注意,您必须在末尾手动添加一个
,因为printf不会像echo那样自动附加换行符。
- 但是,如果使用一个echo命令,那么对于echo"i want to be on one line" echo"i want to be on another"的等效值是多少呢?只有这样,当您有长句子时,您可以用bash包装文本(至少使用3或4行bash行,只使用一个echo命令)。我来这里希望找到答案。例如,用一个echo命令详细说明您的最终答案,使其成为多行,如果我想在我的bash文件中的Snapshot created处将其切断,并使其成为一个新的bash行,而不添加echo命令呢?我想用加上+是不是?
- @责备你可以在行尾用``来破译一行。但这和这里的问题完全不同。
使用此echo语句
1 2 3 4
| echo -e"Hai
Hello
Testing
" |
输出是
- 感谢您使用echo参数。一行命令很好。
- 这应该是公认的答案。多行打印不需要多次重复echo。
1 2 3
| echo $'Create the snapshots
Snapshot created
' |
- 谢谢@ohad cohen。这似乎是唯一可以重定向到文件的解决方案
- 这是一个很酷的技巧。知道为什么会这样吗?
- 我不记得我第一次看到这个的地方,但我相信它是通过bash-vars机制实现的。
您可以使用printf(1)命令,例如
1 2 3
| printf"Hello times %d
Here
" $[2+3] |
printf命令可以接受参数,并且需要一个与标准c printf(3)函数的格式控制字符串类似(但不完全相同)的格式控制字符串…
- printf是否为壳牌公司工作?
- printf命令和printf库功能相似,但不同。