0
var=ab
echo -n "$var"

输出:ab

var=abc
echo "$var"

输出:ababc

我想删除第一个ab并将其替换为abc

我该怎么做?

问候, intelinside

4

1 回答 1

11

也许您正在寻找类似的东西:

var=ab
echo -n "$var"
var=abc
echo -e "\r$var"

这实际上并没有删除任何内容,而只是将光标移动到行首并覆盖。如果正在写入的文本太短,之前写入的内容仍然可见。您可以在旧文本上写空格(非常简单且可移植):

printf "\r%-${COLUMNS}s" "$var"

或使用一些终端转义序列来删除旧文本(不可移植):

echo -e "\r$var\033[K"

移动到行首,写入新文本,然后从光标处删除到行尾。(这可能不起作用,具体取决于终端。)

于 2012-04-25T18:13:43.497 回答