#!/bin/bash
echo "hello^H^H" #hello
echo "hello^H^H " #hel o
我知道 ^H 在控制台中删除了一个字母。但是为什么第一个回声没有效果,第二个得到“hel o”。
退格键只是将光标向右移动一个位置,而不会真正擦除屏幕上打印的内容。只有您的第二条指令实际上通过用字符串中的尾随空格覆盖它来擦除第 4个字符。
我将尝试将其可视化:
$ echo "hello^H^H"
hello
^
`-- cursor position
$ echo "hello^H^H "
hel o
^
`-- cursor position
$ echo "hello^H^H" hello ^
-- cursor position
$ echo "hello^H^H "
hel o
^
-- 光标位置