Во-первых, поймите, что (в csh)endif
нет -оп (нет операции )если нет ожидающих если (с )закрыть. Его выполнение не имеет никакого эффекта.
% endif
%
Таким образом, если ясно (из-за значения 1, что означает true для csh, точно так же, как в языке c ), что команды после if будут выполняться, нет необходимости откладывать их выполнение. исполнения, и им «позволено» действовать немедленно:
% if (1) then
% echo yes
yes
% echo no
no
% endif
Однако для ложного значения (0 )выполнение избегается до тех пор, пока не будет выполнен endif
.
% if (0) then
? echo yes
? echo no
? endif
%
Именно так работает csh.
Примечание :Я не получаю if: improper then
с if 0 then
. Может ошибка где-то в другом.
Ну... Может быть, стоит дать некоторые пояснения. Если я пишу (пробелов перед <enter>
, добавленных только для ясности, не обращайте на них внимания ):
% if 0 then <enter> !!!!!!!!!!!!!
? echo Hello there
? echo Yes
? endif
%
Я не получаю ошибки.
Если я напишу:
% if 0 then echo Hello there <enter> !!!!!!!!!!!!!
% if: Improper then.
Я понимаю вашу ошибку.
Я идиот, нашел ответ. Очевидно, когда вы говорите sar
собирать системную статистику в файл, он выводит в него все , а не только параметры, которые вы ему передали.
Итак, команда sar -r 1 -o /tmp/memory_usage
на самом деле говорит :«захватить все параметры с частотой дискретизации один раз в секунду и записать их в заданный файл». Также , вывести память статистику на терминал с той же скоростью».
Поскольку вся статистика записывается в выходной файл, его можно запрашивать с теми же параметрами, как если бы он был в прямом эфире. Команда sar -r -f /tmp/memory_usage
выводит использование памяти, собранное из файла, как я и ожидал.