gpt4 book ai didi

linux - Echo 不打印某些变量

转载 作者:太空狗 更新时间:2023-10-29 11:44:47 25 4
gpt4 key购买 nike

我的代码有一些问题,即使变量中有字符串,也无法打印某些变量。

$ dmisysname=$(sed -ne 148p ./3A47083/S09850724414683/002590F3851A.txt | awk -F '=' '{ print $2 }' | sed 's/ //')
$ dmibrdname=$(sed -ne 157p ./3A47083/S09850724414683/002590F3851A.txt | awk -F '=' '{ print $2 }' | sed 's/ //')
$ echo $dmisysname $dmibrdname

这应该给我 $dmisysname 和 $dmibrdname 中的任何内容,但输出显示如下:

X9DRi-LN4+/X9DR3-LN4+

为了确保这 2 个变量中有一个字符串,我分别回显了每个变量。

$ echo $dmisysname

PIO-647R-6RLN4F+-ST031

$ echo $dmibrdname

X9DRi-LN4+/X9DR3-LN4+

我是不是做错了什么必须对打印缓冲区做些什么,还是有一个我没有看到的更大的问题?

最佳答案

您的输入文件是在 windows 下创建的,因此使用 CRLF 行终止符。这会导致 的输出在 下根据@Lurker's useful explanation,相对于预期的情况会感到困惑.

使用 dos2unix 实用程序修复您的文件:

$ dmisysname=$(sed -ne 148p ./3A47083/S09850724414683/002590F3851A.txt | awk -F '=' '{ print $2 }' | sed 's/ //')
$ dmibrdname=$(sed -ne 157p ./3A47083/S09850724414683/002590F3851A.txt | awk -F '=' '{ print $2 }' | sed 's/ //')
$ echo $dmisysname $dmibrdname
X9DRi-LN4+/X9DR3-LN4+
$ dos2unix 3A47083/S09850724414683/002590F3851A.txtdos2unix: converting file 3A47083/S09850724414683/002590F3851A.txt to Unix format ...
$ dmisysname=$(sed -ne 148p ./3A47083/S09850724414683/002590F3851A.txt | awk -F '=' '{ print $2 }' | sed 's/ //')
$ dmibrdname=$(sed -ne 157p ./3A47083/S09850724414683/002590F3851A.txt | awk -F '=' '{ print $2 }' | sed 's/ //')
$ echo $dmisysname $dmibrdname
PIO-647R-6RLN4F+-ST031 X9DRi-LN4+/X9DR3-LN4+
$

我在 Linux 下重新创建了您的文件的可用版本,然后使用 unix2dos 按照 Windows 对其进行格式化。然后我就能重现你的问题。使用 dos2unix 恢复它可以修复它。

关于linux - Echo 不打印某些变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23252182/

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