我想在终端上打印如下内容:
lollipop
lollipo
lollip
lolli
loll
lol
lo
l
但是,如果我执行两次 -n,则会得到一个换行符,然后如果我使用 echo,它只会打印“-n”。我如何避免这种情况发生,并使运行 X 时不打印此混乱内容:
lollipop
lollipo-nlollip-nlolli-nloll-nlol-nlo-nl
X:
echo lollipop -n lollipo -n lollip -n lolli -n loll -n lol -n lo -n l
答案1
您需要使用 -e“启用反斜杠转义解释”选项和 \n 来强制换行
echo -e "lollipop\nlollipo\nlollip\nlolli\nloll\nlol\nlo\nl"
答案2
改用 printf:
printf "lollipop\nlollipo\nlollip\nlolli\nloll\nlol\nlo\nl"
答案3
更喜欢使用高级和可移植的工具来进行特殊格式化,而不是像 echo 这样的工具。在这里,我使用 AWK 打印随 提供的不断减少的子字符串here-string
。请注意,我也可以使用printf "%s" lollipop | awk . . .
as well 来获得更好的可移植性
$ awk '{for(i=length($1);i>=1;i--) print substr($1,1,i)}' <<< "lollipop"
lollipop
lollipo
lollip
lolli
loll
lol
lo
l
AWK 的 print 函数总是打印一行,类似于 java 的System.out.println
。这可以替换为print "%s\n",substr($1,1,i)