Не ksh эксперт, но я думаю, что у Вас есть две проблемы в Вашем коде.
Первая проблема: Вы имеете к одинарной кавычке M$9001
иначе оболочка попытается расшириться $9001
.
Вторая проблема: Вы не вкладываете [ ]
внутри [ ]
. Любое использование [[ ]]
или два [ ]
.
Необходимо также заключить в кавычки $H_OR_T
на всякий случай это расширяется до чего-то забавного.
Вот Ваш код, вероятно, исправленный:
if [[ "$H_OR_T" = 'M$9001' || "$H_OR_T" = 'M$9002' ]];
Или быть POSIX, совместимым и более портативным:
if [ "$H_OR_T" = 'M$9001' ] || [ "$H_OR_T" = 'M$9002' ];
Обратите внимание, что существуют тонкие различия между [ ]
и [[ ]]
. ksh documenation немного редок по этой теме. Это является лучшим, я нашел: вопрос о http://www.kornshell.com/doc/faq.html номер 10.
Q10. Между чем различие
[...]
и[[...]]
?A10.
[[...]]
обрабатывается как часть грамматики оболочки тогда как[...]
обрабатывается как любая другая команда. Операторы и операнды обнаруживаются, когда команда читается, не после того, как расширения выполняются. Оболочка не делает разделения слова или поколения пути внутри[[...]]
. Это позволяет шаблонам быть указанными в целях сопоставления строк.
Вы можете сделать это, заменив пробелы в строке на новые.
:%s/\s/\r/g
Это заменит на все строки(%s
), все пробелы (\s
) на новые (\r
).
Вы можете удалить знак процента, чтобы ограничить замену на текущую строку.