Как использовать цикл while в командной строке оболочки csh?

Вы можете создать файл .forward в своем домашнем каталоге, и почта будет пересылаться.

cd 
echo "username@gmail.com" > .forward
chmod 644 .forward                 # change permission else it won't work
2
15.09.2017, 16:33
2 ответа

Синтаксис циклов whileв cshотличается от синтаксиса Bourne -, подобного оболочкам. Это:

while (arithmetic-expression)
  body
end

Когда cshявляется интерактивным, по какой-то причине endдолжен появиться сам по себе в строке.

Для арифметического -выражения для проверки успешности выполнения команды необходимо{ cmd }(пробелов ). { cmd }в арифметических выражениях разрешается в 1, если команда выполнена успешно (завершилась с нулевым статусом выхода )или 0 в противном случае (, если команда завершилась с не -нулевым статусом выхода ).

Так:

while ({ true })
  body
end

Но это было бы немного глупо, особенно если учесть, что trueне является встроенной -командой в csh. Для бесконечного цикла лучше использовать:

while (1)
  body
end

Напротив, в оболочках POSIX используется следующий синтаксис:

while cmd; do
  body
done

И если вы хотите, чтобы условие оценивало арифметическое выражение, вам нужно запустить команду, которая вычисляет их, например expr, или ksh, let/ ((...))или test/ [в сочетании с арифметическими расширениями $((...)).

6
27.01.2020, 21:55
set i = 1
while ($i < 5)
   echo "i is $i"
   @ i++
end

или

set i = 1
while (1)
    echo "i is $i"
    @ i++
    if ($i >= 5) break
end

Эти выходные данные:

i is 1
i is 2
i is 3
i is 4

cshв настоящее время в значительной степени вытеснен оболочками sh-, особенно на платформе Linux (, где использование cshникогда не было широко распространено с самого начала ). Большинство BSD также предлагаютsh-совместимые оболочки в качестве интерактивных оболочек по умолчанию.

Если вы изучаете программирование в оболочке, рассмотрите возможность изучения оболочки sh, если ваша работа не требует от вас изучения сценариев cshи tcsh(в этом случае вы можете использовать оболочку sh, например bash, как вашу интерактивную оболочку вне зависимости от того, с какими типами скриптов вы работаете ).

3
27.01.2020, 21:55

Теги

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