linux 我已经写了一个代码,将检查错误在60秒的时间,但它给出了意外的令牌fi

6yt4nkrj  于 2023-01-29  发布在  Linux
关注(0)|答案(1)|浏览(92)
#!/bin/bash
a=10
b=5
p=60
while [[ $p -ne 0 ]];
do 
  t=$(date)
  if [[ $a -ne $b ]]
  then
      c=$((c+1))
  fi
  p=$((p-1))
  sleep 1
done
if [[ $c -ne 0 ]];
then
    echo "running in $t"
    c=0
fi

我试过加空格了。还是不明白。

9udxz4iz

9udxz4iz1#

首先,您有一些语法错误。

c=$((c+1))

应该是

c=$((c+=1))

类似地,

p=$((p-1))

应该是

p=$((p-=1))

接下来,"a"和"b"永远不会改变,所以它们永远不会相等!!!这保证了"p"* 始终工作在60个值 * 中,但这可以在没有测试比较"a"和"b"的情况下实现(该代码段是多余的)。
声明"running in..."的回显似乎是任意的,并且脱离了这样一个事实,即在该回显之后 * 没有任何内容可以实际重新启动脚本 *!
我只能推断你没有完全理解你想做什么或如何去做。
因此...我建议您考虑以下指导。
如果你从编写代码逻辑开始

  • 在伪码中,
  • 对您尝试完成的每个任务都进行细粒度分析,
  • 以正确的顺序
  • 在正确的上下文中,

然后用语言表达出来,让它做你想让它做的事情......会,几乎是明确地告诉你,你需要为每一个编码什么,而不是如何编码。如何编码是编码的本质。
你在上面的问题中提供的内容并没有反映出解决所需任务分解所需的逻辑元素或细节的必要分离。
如果你试一试,解决方案几乎会从页面上弹出来。

相关问题