Shell ksh print命令显示其他字符
我有一个名为DB_dialogue的变量,它应该包含一个字符串“org.hibernate.dialogue.sqlserverdialogue”。该字符串是从CSV文件导出的 当我试图打印DB_方言内容时,如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脚本还不熟悉,所以这对我来说没有多大意义。
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