Shell ksh print命令显示其他字符

Shell ksh print命令显示其他字符,shell,printing,scripting,ksh,Shell,Printing,Scripting,Ksh,我有一个名为DB_dialogue的变量,它应该包含一个字符串“org.hibernate.dialogue.sqlserverdialogue”。该字符串是从CSV文件导出的 当我试图打印DB_方言内容时,如 print -r ${DB_DIALECT} 我得到以下输出(最后3个字母重复) 通过跟踪和错误,我发现类似的东西可以解决问题 print -r ${DB_DIALECT} | sed 's/[[:digit:]]//g' 因为我对shell脚本还不熟悉,所以这对我来说没有多大意义。

我有一个名为DB_dialogue的变量,它应该包含一个字符串“org.hibernate.dialogue.sqlserverdialogue”。该字符串是从CSV文件导出的

当我试图打印DB_方言内容时,如

print -r ${DB_DIALECT}
我得到以下输出(最后3个字母重复)

通过跟踪和错误,我发现类似的东西可以解决问题

print -r ${DB_DIALECT} | sed 's/[[:digit:]]//g'
因为我对shell脚本还不熟悉,所以这对我来说没有多大意义。有人能解释一下为什么最后几个字符会重复吗

还有一件事我搞不清楚,那就是

print -r ${DB_DIALECT} | od -c
那是

0000000   o   r   g   .   h   i   b   e   r   n   a   t   e   .   d  i
0000020   a   l   e   c   t   .   S   Q   L   S   e   r   v   e   r  D
0000040   i   a   l   e   c   t  \n 
0000047   
t  \n 
0000053
'od-c'(character)表示在预期字符串的末尾有一些额外的字符;不幸的是,很难说清楚其中的一些角色是什么。(“嘘,马克!”)

“od-d”(十进制)或“od-x”(十六进制)的输出可能更有用,因为它们应该显示额外字符的十进制/十六进制值


同时,更大的问题是:这些额外的字符是如何进入变量的

答案是:您需要提供更多关于CSV文件内容和格式的详细信息,CSV文件的来源/方式(可能有助于确定格式),以及用于填充DB_方言变量的命令

0000000   o   r   g   .   h   i   b   e   r   n   a   t   e   .   d  i
0000020   a   l   e   c   t   .   S   Q   L   S   e   r   v   e   r  D
0000040   i   a   l   e   c   t  \n 
0000047   
t  \n 
0000053