CSH Если утверждение интерактивное использование

Если вы просто хотите рассматривать строку как литерал в sed то для этого уже есть ответ:

escaped_testx="$(sed -e 's/[\/&]/\\&/g' <<< "$TEST"; echo x)"
escaped_test="${escaped_testx%x}"

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

-1
11.09.2018, 16:56
2 ответа

Во-первых, поймите, что (в 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.

Я понимаю вашу ошибку.

0
28.01.2020, 05:14

Значение 1эквивалентно FALSEна уровне оболочки.

Также имейте в виду, что cshнемного подозрительно, поскольку if— это не ключевое слово csh, а скорее встроенная команда.

В cshвстроенная команда ifвызывает отдельный синтаксический анализатор, который считывает оператор до тех пор, пока он не будет прочитан полностью.

Обратите внимание, что в отличие от FreeBSD и, возможно, Linux, cshв Solaris не идентичен tcsh, а представляет собой другой двоичный файл. Но даже tcshтак себя ведет на Солярисе.

В общем, csh непоследовательно, см., например,.http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/

-2
28.01.2020, 05:14

Теги

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