2017-09-05 7 views
-1

私のコードをしばらく実行していて、理由を見つけることができません。明らかにifステートメントである行10で失敗しているために失敗していますが、行の値を正しく検出しています。私はbashでNoというファイルやディレクトリエラーが発生していますが、ファイルに失敗しているようではありません。

#!/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

あなたは不等式演算子とリダイレクトを混同しています。 if [x -gt y] 'のような"より大きい "を試してください。 – meatspace

答えて

5

これは間違っています:

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

まず、コメントで指摘したように、>はリダイレクト演算子で、bashが実行しようとしている:へ

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

変更"$ line"コマンド。括弧はテスト演算子ではなく、角かっこはです。

最後に、"$largest"が割り当ての対象として間違っています。 $は、変数の値を提供するようbashに指示し、largestの値ではなく、largestに割り当てたいとします。

+1

私は英語で少し説明することをお勧めします: '>'はリダイレクションであり、 '' 'は' test'標準コマンドまたは組み込みコマンドです –

関連する問題

 関連する問題