'-ge'を使用したバッシュテストトイレ - 0で除算エラー

'-ge'を使用したバッシュテストトイレ - 0で除算エラー

次のスクリプトではエラーが発生します。

#!/bin/bash  
if [[ $(wc -l "/disk1/environment.sh") -ge 0 ]];then  
   echo "File has data"  
fi

line 2: [[: 5 /disk1/environment.sh: division by 0 (error token is "/environment.sh")

しかし、以下のコードはうまくいきます。

#!/bin/bash  
  if [[ $(wc -l "/disk1/environment.sh") > 0 ]];then  
    echo "File has data"  
  fi

ここで「-ge」と「>」がなぜ異なる動作をするのかを教えてくれる人はいますか?
バッシュバージョン:GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)

ベストアンサー1

wc -l /filenameこれは、次のように出力される出力によるものです。

5 /filename

ただし、整数比較(演算子-ge:)を実行しているため、関係のない部分が/filename無効でエラーメッセージが表示されます。

数が返されるwcようにSTDINを介してファイル名を渡すだけです。wc

[[ $(wc -l </disk1/environment.sh) -ge 0 ]]

2番目の場合は、[[ $(wc -l /disk1/environment.sh) > 0 ]]コマンド置換の出力が$(wc -l /disk1/environment.sh)アルファベット順にソートされていることを確認してください0wcこれは、いくつかのエラーが返され、STDOUTで結果が生成されない限り、常にそうです。

、、、、などの[[算術演算子はサポートされていません。次のキーワードが必要です。>>=<<=((

(( $(wc -l </disk1/environment.sh) > 0 ))

おすすめ記事