bash - while循环BASH中的语法错误

标签 bash background while-loop syntax-error

我正在尝试运行一个循环,该循环将通过以下方式在后台运行matlab命令:

while [$i -lt $p] || [$i -eq $p] do
     $i>i.txt
     echo "matlab -nojvm -r readtxt_abc;pause(1);myfunc1(a,b,c);clear" |sh &
     let i=i+1
done

我得到一个错误
bash:syntax error near unexpected token 'done'

如果有人知道错误的原因是什么,请让我知道,谢谢!

最佳答案

方括号本质上是命令而不是语法元素,因此它们之间需要有空格。将dowhile放在同一行时,您还需要分号。

while [ $i -lt $p ] || [ $i -eq $p ]; do

小于等于运算符是-le,而不是执行两个测试。

但是,这在Bash中是首选的:
while ((i <= p)); do
     # $i>i.txt     # this line doesn't make any sense
     matlab -nojvm -r 'readtxt_abc;pause(1);myfunc1(a,b,c);clear' &    # there's no need to pipe this to sh
     ((i++))
done

但是您可以让Bash维护您的计数器变量:
for ((i = 0; i <= p; i++)); do
    . . .
done

也许第二行应该是:
echo "$i" > "$i.txt"

但我不知道你为什么要这么做。

关于bash - while循环BASH中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781290/

相关文章:

node.js - 使用 NVM 设置 Node 版本或安装(如果不可用)。

swift - 如何停止后台更新任务?

ios - 我可以在 iOS 中确定应用程序是从待机状态还是从多任务处理恢复

c - 为什么数组不接受空终止符?

perl - 如何使用 bash 或 Perl 脚本遍历目录树?

linux - 完成使用后如何终止端口转发

linux - 无法在 bash 中使用/dev/stdin 访问 POSTed 变量

html - 将下拉文本的颜色更改为黑色

python - 迭代列表以生成列表中元素的所有可能组合?

java - 循环结束后如何重复循环