Csh

csh if 語句互動使用

  • September 13, 2018

要麼我的 Solaris 10 csh 實現if語句有問題,要麼我沒有得到正確的東西(當然,至少在我的情況下,第二個很可能)但是當我這樣做時:

% if 1 then <enter>
%

=> 什麼都沒發生

當我這樣做時:

% if 0 then
?

=> 這也是我在第一種情況下所期望的。Couse 否則我沒有辦法完成我的陳述而沒有得到

if: improper then

我真的可以請您不要以“不要使用 csh”作為您讚賞的答案的開頭……如果您真的喜歡它,您可以用它來結束它。Couse 在過去幾年到現在為止,csh 為我的互動目的提供了很好的服務,對於我所做的這個小腳本,我使用 Bourne shell 或 bash。

謝謝

首先,了解(在 cshendif中)如果沒有待處理的 if(s) 要關閉,則為無操作(無操作)。執行它沒有任何效果。

% endif
%

因此,如果很清楚(因為值為 1,這對 csh 表示 true,與 c 語言中的完全一樣) if 之後的命令將被執行,則無需延遲它們的執行,並且它們是“允許的” " 立即生效:

% if (1) then
% echo yes
yes
% echo no
no
% endif

但是,對於假值 (0),在執行 a 之前會避免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.

我明白你的錯誤。

引用自:https://unix.stackexchange.com/questions/468284