bash中的语法错误
我想在bash中编写脚本(我开始在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] 您需要空格和引号(为了安全起见,包含空格或空值的内容): 更好的方法
#!/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