gpt4 book ai didi

linux - Bash 替换字符串我不希望它这样做

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:06 26 4
gpt4 key购买 nike

我有一个要运行命令的列表,所以我首先用 echo 测试它以确保它是正确的,但它打印出来是错误的。

while read name; do echo $name; done < RandomNames

这会按照我想要的方式打印出这个列表,但是如果我在变量后面放置任何内容,它就会替换它的开头。

所以如果我写

while read name; do echo $name; done < RandomNames

它将打印

Rich
Chris
Zack

但是如果我写

while read name; do echo $name t; done < RandomNames

它写道

 tch
tris
tck

所以它用我在变量后面放置的内容替换了前两个字符,我不知道为什么。

最佳答案

您的文件有 DOS 换行符,因此每个输入行都以一个隐藏的 $'\r' 字符结尾,该字符在打印该行后将光标移动到该行的开头,这样写入的下一个字符就会覆盖该行的第一个字符。

使用dos2unix或类似工具将它们转换为UNIX换行符,或者展开${name%$'\r'}来修剪它们。

关于linux - Bash 替换字符串我不希望它这样做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35633055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com