Опубликованного код прекрасно работает под KSH.
$ contract=c
$ fld1=c
$ if [[ $contract = "$fld1" ]];then
> read position?"Enter the position of Contract number in m-n format,m should be less than n " <
> fi
Enter the position of Contract number in m-n format,m should be less than n 1-2
$ echo $position
1-2
В ответ на комментарий ежа, вы можете использовать менее запутанную подсказку, как эти один:
read position?"Enter the position of Contract number in m-n format, (m should be less than n) : "
Обратите внимание, что синтаксис read variable?prompt
является ksh
специфичен. Под номером bash
вы будете использовать read -p prompt variable
. Портативный метод можно использовать на большинстве оболочек на основе синтаксиса Bourne будет printf "%s" "$prompt" ; read variable
Рассмотрите возможность использования 'установить -x' контролировать значения' $ contract' и '$ fld1' во время выполнения. Так как это вполне допустимый код (по крайней мере, в ksh93), вероятным объяснением является то, что они не * действительно * равны. –
(... Я должен задаться вопросом, кто поднимает вопрос, не понимая проблемного пространства достаточно хорошо, чтобы узнать, является ли проблема, которую он идентифицирует, является подлинной). –
Выше кода хорошо работает в моем ksh. @CharlesDuffy, Спасибо за ваши комментарии по [моему ответу] (http://stackoverflow.com/a/36731484/5832518). – Raju