bash中的语法错误

pkr*_*ruk 2 unix bash

我想用bash编写脚本(我开始用bash编程),但我有错误,我尝试了一切,但我仍然不知道如何修复它.

#!/bin/bash
cap=0
cat|while read line
  do
  read a
    if[$a -gt $cap]
       then echo "MORE"
fi
done
Run Code Online (Sandbox Code Playgroud)

这是简单的脚本,但我是bash的新手,请有人帮助我;)

Cha*_*ffy 8

语法错误在这里:

if[$a -gt $cap]
Run Code Online (Sandbox Code Playgroud)

你需要空格和引号(对于带有空格或空值的内容是安全的):

if [ "$a" -gt "$cap" ]
Run Code Online (Sandbox Code Playgroud)

更好的方法是使用[[测试机制,即语法(而不是[命令),并且不需要双引号来保证安全:

if [[ $a -gt $cap ]]
Run Code Online (Sandbox Code Playgroud)

比这更好的是使用数学上下文,它允许您使用传统的数学运算符并自动解引用变量:

if (( a > cap )) ; then ...
fi
Run Code Online (Sandbox Code Playgroud)