Shell中的比较

时间:2018-03-08 21:56:11

标签: bash shell unix

我正在尝试编写一个程序来检查存储在文件(变量n)+ 8中的数字是否大于或等于100.如果是,则终止,否则,添加8并存储回文件。但是,当我尝试运行它时,它表示无法找到第4行中的命令(如果条件)。有人可以向我解释为什么这不起作用?感谢。

#!/bin/bash
n=$(cat test.txt)
if [$(($n+8)) -ge 100]
then
    echo 'terminated program' > test.txt
else
    m=$(($n+3))
    echo $m > test.txt
fi

1 个答案:

答案 0 :(得分:3)

你错过了一些空格:

if [$(($n+8)) -ge 100]

- >

if [ $(($n+8)) -ge 100 ]

但在使用时,更喜欢使用bash arithmetic

的现代解决方案
if (( n+8 >= 100 ))

甚至

if ((n+8>=100))

就像@Gordon Davisson在评论中所说:算术上下文如inside(())是bash中空间不是关键分隔符的少数几个地方之一。