あなたの問題の解決策
どうやら equal comparison の周りにスペースが必要です==
。これは機能します:
#!/bin/tcsh -f
#
set val = 0
foreach scen ( a b )
echo $scen
if ($scen == a) then
echo $scen
else
echo $val
endif
end
生産:
a
a
b
0
求められていないアドバイス
また、ここで tcsh を使用する必要がない限り、bash や zsh などのより優れたシェルを使用することをお勧めします。以下に、csh と tcsh に対するいくつかの反論を示します。
比較のために、bash (および zsh) のコードを次に示します。
#!/bin/bash
# No space around equal sign in assignment!
val=0
for scen in a b; do
echo $scen
if [[ $scen == a ]]; then
echo $scen
else
echo $val
fi
done
ここに重要な違いはありませんが、csh が不適切な選択となる例については、上記の記事を参照してください。