csh if文の対話型を使用する

csh if文の対話型を使用する

私のSolaris 10 cshの実装に問題があります。もしまたは私は正しいことを得ていません(まあ、少なくとも私の場合は2番目のものが最も可能性が高いです)。しかし、私がそうすれば:

% if 1 then <enter>
%

=>何も起こらなかった

私がこれを行うとき:

% if 0 then
?

=>最初の状況でもそう思いました。そうでなければ、私は以下を得ることなく私の声明の構成を完了することができません。

if: improper then

「cshを使用しないでください」と賛成の答えを開始しないように本当に懇願することができますか?本当に欲しいならこれで終わってもいいです。ここ数年、cshはこれまで対話的な目的で私に多くの助けを与えてきましたが、私が書いたこの小さなスクリプトではBourneシェルまたはbashを使用していました。

ありがとう

ベストアンサー1

まず、endif閉じる保留中のif(s)がないと(cshで)何もできません。実行しても効果はありません。

% endif
%

したがって、ifの後に続くコマンドが実行されることが明らかな場合(cと同様にcshの場合は値が1であるため)、実行を遅らせる必要はなく、すぐに「許可」されます。 :

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

endifただし、false値(0)の場合、aが実行されるまで実行は回避されます。

% if (0) then
? echo yes
? echo no
? endif
%

これがcshがどのように機能するかです。

注:同意しませif: improper thenif 0 then。たぶんエラーが別の場所にあるかもしれません。

編集する

うーん…おそらく少し説明が必要だと思います。私が書いている場合(<enter>明確にするために追加する前にスペースを追加して無視してください):

% if 0 then                            <enter> !!!!!!!!!!!!!
? echo Hello there
? echo Yes
? endif
%

エラーは発生しません。

私が書いた場合:

% if 0 then echo Hello there                       <enter> !!!!!!!!!!!!!
% if: Improper then.

私はあなたの間違いを理解しています。

おすすめ記事