while 循环中的意外标记“完成”

mah*_*ood 0 bash shell-script

我想知道这个 bash srcipt 中的语法错误是什么

#!/bin/bash
CURRENT=1594184400
while true do
  NEXT=$((CURRENT+300))
  CURRENT=$NEXT
done
Run Code Online (Sandbox Code Playgroud)

我得到的

syntax error near unexpected token `done'
Run Code Online (Sandbox Code Playgroud)

错误?

Nas*_*ley 6

您要么需要true在第二行后面加一个分号,要么单独放在do下一行。

要么这样:

#!/bin/bash
CURRENT=1594184400
while true; do     
  NEXT=$((CURRENT+300))
  CURRENT=$NEXT
done
Run Code Online (Sandbox Code Playgroud)

或这个:

#!/bin/bash
CURRENT=1594184400
while true 
do
  NEXT=$((CURRENT+300))
  CURRENT=$NEXT
done
Run Code Online (Sandbox Code Playgroud)

您可以在此处检查 shell 脚本是否有错误:

https://www.shellcheck.net/

您还可以bash -n script在终端上运行以检查错误。