var=ab
echo -n "$var"
Run Code Online (Sandbox Code Playgroud)
输出: ab
var=abc
echo "$var"
Run Code Online (Sandbox Code Playgroud)
输出: ababc
我想删除第一个ab并替换它abc
我该怎么办?
此致,知识产权
Wil*_*ell 11
也许你正在寻找类似的东西:
var=ab
echo -n "$var"
var=abc
echo -e "\r$var"
Run Code Online (Sandbox Code Playgroud)
这实际上并不删除任何内容,而只是将光标移动到行的开头并覆盖.如果写入的文本太短,则前一次写入的内容仍然可见.你可以在旧文本上写空格(非常简单和便携):
printf "\r%-${COLUMNS}s" "$var"
Run Code Online (Sandbox Code Playgroud)
或使用一些终端转义序列删除旧文本(不可移植):
echo -e "\r$var\033[K"
Run Code Online (Sandbox Code Playgroud)
移动到行的开头,写入新文本,然后从光标删除到行尾.(这可能不起作用,具体取决于终端.)