2016-10-27 2 views
0

Его простой вопрос, но слишком много проблем при обходе. Все упомянутые решения работают с ksh99. Но, к сожалению, я использую ksh88, и я не могу получить подстроку из строки.Подстрока в unix ksh88

Я пытаюсь получить год часть строки. но я получаю сообщение об ошибке. Синтаксис разреза кажется прекрасным. также назначение переменной.

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

Настоящая инструкция используется.

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

Трудно представить, что код, который был отправлен, потерпит неудачу. Работает ли команда 'cut' автономно? Посмотрите, можете ли вы создать [MCVE (минимальный, полный и проверенный пример)] (http://stackoverflow.com/help/mcve). – mklement0

+0

Как вы застряли в ksh88, я предполагаю, что вы используете вариант Unix старой версии, HP или AIX, оба из которых известны своими причудливыми реализациями. Вы проверили 'man cut', чтобы увидеть, что' c' на самом деле означает символ ;-)? Возможно, добавьте тег для вашей ОС. (И я уверен, что вы имеете в виду ksh95. В то время как новые kshs, которые выходят до 2 лет назад, все они по-прежнему классифицируются как ksh95. Наконец, вы искали '/ usr/xpg4/bin/ksh' или какой-нибудь другой каталог?) Удачи. – shellter

+0

Попробуйте 'echo 201610118 | cut -c1-4'. Когда это работает, попробуйте свою команду без 'typeset -i'. Также попробуйте 'typeset -i dt_year =" 2016 "'. Объедините эти тесты для определения вашей проблемы. –

ответ

0

Я бы в ksh88 отделить линию:

typeset -i dt_year=0 

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

Вы также можете попытаться оставить из cut -c-4

И проверьте с псевдонимом, если cut является совмещенным.

 Смежные вопросы

  • Нет связанных вопросов^_^