【问题标题】:"unnecessary string to number conversion" in ksh scriptksh 脚本中的“不必要的字符串到数字的转换”
【发布时间】:2010-11-19 13:19:17
【问题描述】:

我正在 Korn shell 中编写一些脚本,但我不知道如何避免“变量扩展需要不必要的字符串到数字转换”的警告。我的代码如下:

#!/bin/ksh
testnum=04
(( $testnum == 4 ))

在第三行发现了错误。我试过添加integer testnum,但这似乎没有任何区别。

【问题讨论】:

  • 这是一个很棒的信息。 “需要”和“不必要”指的是同一件事。
  • @bmargulies:不就是这样吗?我尝试用谷歌搜索它,但我能找到的唯一结果是生成它的(非常密集且看似未注释的)代码。
  • 这必须是特定于版本的。对我来说,“版本 JM 93t+ 2009-05-01”不会发出此错误。 pdksh 或 mksh 也不行。你运行的是什么版本?
  • 来自 ksh93 源代码,此警告消息出现在最后一个版本中 (93t+ 2010-06-21)。 ksh.sourcearchive.com/documentation/93tplus-p20100621/…

标签: scripting shell comparison ksh


【解决方案1】:

我怀疑此消息意味着您正在通过在脚本的数字部分使用 $testnum 将 testnum 转换为字符串,这是不必要的。使用此语法时,您可能不会收到此消息:

#!/bin/ksh
testnum=04
(( testnum == 4 ))

【讨论】:

  • 在“(( ... ))”中,需要算术表达式。那里的 shell 语法有些不同,特别是变量会自动扩展。请注意,在某些情况下需要 $,例如,如果您需要引用脚本参数(例如:$1)。
猜你喜欢
  • 2015-10-04
  • 2021-05-01
  • 2012-08-01
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多