unix 使用c shell的脚本中出现While循环语法错误

nlejzf6q  于 2023-05-06  发布在  Unix
关注(0)|答案(2)|浏览(238)

我尝试打印小于用户输入的数字的平方数。如果数字大于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.
von4xj4u

von4xj4u1#

你的剧本有几个问题。
您试图将$inum(字符串)进行比较,而不是与$num进行比较。
您可以使用@来计算算术表达式,例如@ x = 2 + 2$x设置为4;把它作为练习。将算术表达式括在反引号中不起作用;它尝试将包含的文本作为命令执行,并扩展到命令的输出。
循环条件不正确。如果用户输入500,您将打印500行输出。
(csh并不是一种很好的编程语言。考虑学习sh或它的一个亲戚,如ksh、bash或zsh。)

des4xlb0

des4xlb02#

使用expr应该可以解决这个问题,并将$添加到num

#! /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 = `expr $i \* $i`
  echo $Square
  @ i++
end
endif

相关问题