我有一个名为DB_DIALECT的变量,它应该包含一个字符串" org.hibernate.dialect.SQLServerDialect"。该字符串从CSV文件导出。
当我尝试打印像
这样的DB_DIALECT内容时print -r ${DB_DIALECT}
我得到以下输出(重复最后3个字母)
org.hibernate.dialect.SQLServerDialect
etc
通过追踪和错误我发现这样的事情解决了问题
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
答案 0 :(得分:1)
'od -c'(字符)显示你在预期的字符串末尾有一些额外的字符;不幸的是,很难确切地说出这些角色是什么。 (“呃,马克!”?)。
'od -d'(十进制)或'od -x'(十六进制)的输出可能更有用,因为它们应显示 extra 字符的十进制/十六进制值。 / p>
与此同时,更大的问题是:那些额外的字符是如何进入变量的?
答案是:您需要提供有关该CSV文件的内容和格式的更多详细信息,CSV文件的来源/方式(可能有助于确定格式),以及您的命令用于填充DB_DIALECT变量。