Bashシェルで変数が空かどうかを確認する必要がある場合は、次のスクリプトで確認できます。
if [ -z "$1" ]
then
echo "variable is empty"
else
echo "variable contains $1"
fi
しかし、それをtcshシェルに変換する必要があります。
tcsh
/csh
の使用に関する標準的な警告が適用されますが、翻訳は次のとおりです。
if ( "$1" == "" ) then # parentheses not strictly needed in this simple case
echo "variable is empty"
else
echo "variable contains $1"
endif
ただし、上記で$1
ではなく任意の変数名を使用する場合、その変数がまだ定義されていない場合はステートメントが壊れます(一方$1
は常に定義されます(設定されていなくても)。
変数、たとえば$var
が定義されていない場合を計画するには、注意が必要です。
if (! $?var) then
echo "variable is undefined"
else
if ("$var" == "") then
echo "variable is empty"
else
echo "variable contains $var"
endif
endif
ネストされたif
sが必要ですtcsh
は明らかに短絡しないので、スクリプトの破損を回避します(else if
ブランチの条件は評価されますif
ブランチが入力された場合;同様に、&&
および||
式の両側は一見always評価済み-これは、少なくとも未定義の変数の使用に関して適用されます)。
これを試すことができます( こちらにあります ):
set name
if ( ${%name} == 0 ) then
echo " Variable name has 0 characters as value."
endif
これを投稿した人には次の署名があることに注意してください。
標準的なアドバイス:スクリプト用のcshファミリは避けてください。
注:nameが環境変数の場合、これは壊れます。
setenv name foobar ; set name ; echo '+++'$name'+++' ; unset name ; echo '==='$name'==='
++++++
===foobar===
編集:以下のコメントを参照してください。
if ( $?1 ) then
echo "variable is empty"
else
echo "variable contains $1"
endif