Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash中的语法错误_Bash_Unix - Fatal编程技术网

bash中的语法错误

bash中的语法错误,bash,unix,Bash,Unix,我想在bash中编写脚本(我开始在bash中编程),但我有错误,我尝试了所有方法,但仍然不知道如何修复这个错误 #!/bin/bash cap=0 cat|while read line do read a if[$a -gt $cap] then echo "MORE" fi done 这是一个简单的脚本,但我是bash的新手,请有人帮帮我;) 语法错误如下: if[$a -gt $cap] 您需要空格和引号(为了安全起见,包含空格或空值的内容): 更好的方法

我想在bash中编写脚本(我开始在bash中编程),但我有错误,我尝试了所有方法,但仍然不知道如何修复这个错误

#!/bin/bash
cap=0
cat|while read line
  do
  read a
    if[$a -gt $cap]
       then echo "MORE"
fi
done

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

语法错误如下:

if[$a -gt $cap]
您需要空格和引号(为了安全起见,包含空格或空值的内容):

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

if [[ $a -gt $cap ]]
比这更好的是使用数学上下文,它允许您使用传统的数学运算符并自动取消引用变量:

if (( a > cap )) ; then ...
fi

解释您试图用脚本完成什么。您试图完成什么?首先,$line已经包含从输入文件读取的当前行,因此您不需要第二次读取a,否则将丢失输入文件的一半行。其次,您不需要cat |,while read将使用从stdin读取这个代码有很多问题。
if (( a > cap )) ; then ...
fi