Отправить конкретный журнал с определенной фазой на мою почту

В ответе

slm не учтено, что вы спрашивали об оболочке Korn, а не об оболочке Bourne Again. В оболочке (93) Korn нет встроенной команды expr, поэтому при использовании expr в сценариях оболочки Korn вы используете внешнюю команду expr. Это не является проблемой как таковой. В конце концов, именно так поступали с оболочкой Bourne, в которой также не было встроенной команды expr. Но, как отмечает М. Коэн, можно предпочесть использовать встроенные команды оболочки, если они есть. А в оболочке Korn они есть.

M. Коэн указывает на арифметическую подстановку, доступную в оболочке Korn. Важно помнить, что это подстановка, поэтому вы должны что-то сделать с результатом подстановки, если не хотите просто выполнить ее как команду. Более полная форма ответа М. Коэна (попутно исправляя ошибку предшествования операторов) выглядит так:

AVERAGE="$(( (first + second + third) / 3))"

Но есть два других способа сделать это в оболочке Korn. В оболочке Korn есть встроенная команда let, которая выполняет арифметическую оценку на каждом из своих аргументов:

let "AVERAGE = (first + second + third) / 3"

Каждый аргумент команды является одним выражением, поэтому пробелы должны быть заключены в кавычки, как здесь.

У него также есть часть синтаксиса, которая описана в руководстве одного клона ksh как "синтаксический сахар для let" с выражением, превращенным в единственный аргумент этой команды:

(( AVERAGE = (first + second + third) / 3 ))

Дальнейшее чтение

0
09.12.2017, 14:54
0 ответов

Теги

Похожие вопросы