我没有得到数字的立方体

Par*_*ati 2 shell files

while [ "$c" = y -o "$c" = Y -o -z $c ]
do
  echo enter a number;
  read n;
    if [ $n -ge 0 -a $n -le 50 ];then
      echo "cube= `expr $n * $n * $n`";
    fi;
  echo y to continue  or any to exit;
  read c;
done
Run Code Online (Sandbox Code Playgroud)

der*_*ert 6

您的 shell 脚本有一些问题。首先,你应该$c在 while 中引用(所有这些 - 你错过了最后一个)。否则,当 $c 为空时(例如,在程序开始时), -z 测试不会传递任何内容而不是空字符串,并给出错误(类似于“期望参数”的内容)。

其次,您需要*expr命令中转义。否则它会尝试做一个 glob(匹配文件名),就像cat *会做的那样。最简单的就是逃避它\*。错误将取决于 * 恰好扩展到什么(即,当前目录中的文件),但可能会令人困惑!

这至少应该让你的脚本运行。

PS:还有很多方法可以改进,您可能需要查看ShellCheck以获取一些(自动)建议。