我尝试打印小于用户输入的数字的平方数。如果数字大于1000,则显示错误消息。我的代码的问题是,wile循环似乎有一个语法错误,但我无法找到语法错误后,多次尝试。
下面是我的代码:
#! /bin/csh -f
set Square = 0
echo "Please enter a number smaller than 1000"
set num = $<
if ($num > 1000) then
echo "The number is invalid"
exit 1
else
echo "Square number for 1 to $num"
set i = 1
while ($i <= num)
set Square = `$i * $i`
echo $Square
@ i++
end
endif
如果我输入一个虚拟的数字,比如455。
Error:
455
Square number for 1 to 455
while: Expression Syntax.
2条答案
按热度按时间von4xj4u1#
你的剧本有几个问题。
您试图将
$i
与num
(字符串)进行比较,而不是与$num
进行比较。您可以使用
@
来计算算术表达式,例如@ x = 2 + 2
将$x
设置为4
;把它作为练习。将算术表达式括在反引号中不起作用;它尝试将包含的文本作为命令执行,并扩展到命令的输出。循环条件不正确。如果用户输入
500
,您将打印500行输出。(csh并不是一种很好的编程语言。考虑学习sh或它的一个亲戚,如ksh、bash或zsh。)
des4xlb02#
使用
expr
应该可以解决这个问题,并将$
添加到num
: