我试着这样说。我希望日期可以在箭头内看到:
#!/bin/bash
clear
echo
echo -ne "----->" | lolcat; date | lolcat;
echo -e "<-----"
答案1
我希望箭头里面能看到日期
date
生成的输出末尾有一个换行符,您需要将其删除。此外,如果输入中没有尾随换行符,lolcat
则会添加它(至少在我的 Debian 9 中)。因此,我猜您应该更喜欢使用单个换行符lolcat
来处理所有内容。
(echo -n "----->"; date | tr -d '\n'; echo "<-----") | lolcat
# or
echo "----->$(date)<-----" | lolcat
第一个变体用于tr
从 的输出中删除换行符(实际上是一个尾随换行符)date
。Singlelolcat
处理来自整个子 shell 的流((…)
)。
第二种变体将 的输出嵌入date
到 的参数中echo
。这里的技巧是命令替换 ( $(…)
) 删除所有尾随换行符。
自从printf
优于echo
,更优雅的解决方案可能是:
printf -- '----->%s<-----' "$(date)" | lolcat
笔记双破折号在这里非常有用。
在 Bash 中,你可以使用<<<
将字符串传递到命令的 stdin,而无需显式使用echo
或printf
。像这样:
lolcat <<< "----->$(date)<-----"