我在bash中遇到没有这样的文件或目录错误,但它似乎没有在文件上失败

时间:2017-09-05 17:34:39

标签: linux bash

我已经在我的代码中运行了一段时间,并且似乎找不到这个失败的原因,因为它在第10行显然失败了,这显然是if语句,但是它正确地找到了线。

#!/bin/bash
#a script that reads the largest number from a file

file="$1"
largest=""
while IFS= read -r line
do 
    if("$line" > "$largest")
    then
        "$largest"="$line"
    fi
done <"$file"
echo "$largest"

1 个答案:

答案 0 :(得分:5)

这是不正确的:

if("$line" > "$largest")
then
    "$largest"="$line"
fi

更改为:

if [ "$line" -gt "$largest" ]
then
    largest="$line"
fi

首先,正如评论中指出的那样,>是一个重定向运算符,而bash正在尝试运行“$ line”命令。括号不是测试运算符,方括号是。

最后,"$largest"作为作业的目标是不正确的。 $告诉bash提供变量的值,我们要分配给largest,而不是largest的值。