【问题标题】:Substring in unix ksh88unix ksh88中的子字符串
【发布时间】:2016-10-27 13:23:00
【问题描述】:

这是一个简单的问题,但给解决方法带来了太多麻烦。 提到的所有解决方案都适用于 ksh99。但不幸的是,我使用 ksh88,我无法从字符串中获取子字符串。

我正在尝试获取字符串的年份部分。但我收到一个错误。剪切语法似乎很好。也是对变量的赋值。

cut: The list arguments following the c option are not correct.

这是使用的语句。

typeset -i dt_year=`echo 201610118 | cut -c1-4`

【问题讨论】:

  • 很难想象发布的代码会失败。 cut 命令是否独立工作?看看你能不能制作一个MCVE (Minimal, Complete, and Verifiable Example)
  • 当您被 ksh88 困扰时,我猜您正在使用旧的 Unix 变体 HP 或 AIX,它们都以其古怪的实现而闻名。您检查man cut 是否看到c 实际上意味着字符;-)?也许为您的操作系统添加标签。 (我确定您的意思是 ksh95。虽然新的 ksh 直到 2 年前才出现,但它们仍然被归类为 ksh95。最后,您是否在寻找 /usr/xpg4/bin/ksh 或其他目录?)祝你好运。
  • 试试echo 201610118 | cut -c1-4。如果可行,请尝试不使用 typeset -i 的命令。也可以试试typeset -i dt_year="2016"。结合这些测试来查明您的问题。
  • @shellter 你的意思是ksh93,对吧?
  • @AdrianFrühwirth:多啊!是的,ksh93。 (我不能责怪早起/迟到!)。祝大家好运。

标签: unix ksh


【解决方案1】:

我会在 ksh88 中将您的行分开:

typeset -i dt_year=0

dt_year=`echo "201610118" | cut -c1-4`

您也可以尝试省略cut -c-4

如果cut 是别名,请检查别名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多