スクリプトの後に1つ以上のパラメータを入力すると、そのパラメータが表示されるスクリプトを作成しています。パラメータを入力していない場合は、「1つ以上のパラメータを入力してください」と表示されます。
何らかの理由で、私のスクリプトは最初のタスクを実行しますが、スクリプトの0パラメータタスクは実行しません。私は何が間違っていましたか?これは単に論理的なエラーですか?
foreach arg ( $* )
if ( $#arg == 0 ) then
echo "Please enter one or more arguments."
else if ( $#arg > 0 ) then
echo "Found argument = $arg"
endif
end
ベストアンサー1
スクリプトにパラメータがない場合、$ *は何も同じではないため、何もしません。
あなたのスクリプトは実際には次のようになります。
foreach arg ( )
echo "Nothing to see here"
end
何がより合理的ですか?
# check how many arguments passed to script
if ( $#argv == 0 ) then
echo "Please enter one or more arguments."
exit 1
endif
foreach arg ( $* )
echo "Found argument = $arg"
end