【问题标题】:ksh print command displays additional charactersksh print 命令显示附加字符
【发布时间】:2017-10-29 19:25:26
【问题描述】:

我有一个名为 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

【问题讨论】:

    标签: shell printing scripting ksh


    【解决方案1】:

    'od -c' (字符)显示您在预期字符串的末尾有一些 extra 字符;不幸的是,很难准确地说出其中一些字符是什么。 (“呃,马克!”?)。

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


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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 2012-01-31
      • 2020-09-24
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多