不足している ']' 問題が見つかりませんでしたが、この問題が表示されました。

不足している ']' 問題が見つかりませんでしたが、この問題が表示されました。

私は次のスクリプトを書いた。

#!/bin/bash
if [ $# -eq 0 ]
then
    read fichier1 
    read fichier2
    read fichier3
    if [ -rf "fichier1" && -wf "fichier3" ] || [ -rf "fichier2" && -wf "fichier3" ]
    then
        echo "Vrai"
    else
        echo "FAUX"
    fi
else
    if [ -rf "$1"  && -wf "$3" ] || [ -rf "$2" && -wf "$3" ]
    then
        echo "Vrai"
    else
        echo "FAUX"
    fi
fi

実行できません。エラーがあります。「失われた」] ''生産。

答え1

コードには少なくとも3つの欠陥があります。

  1. [ ... && ... ]で書く必要があります[ ... ] && [ ... ]
  2. -rf-wf有効な演算子でもありません。何を達成したいですか?
  3. "$fichierN"行7では代わりに書くこともできます"fichierN"

答え2

コメントでRalph Ronquistを使用すると述べたように、問題は&&テスト式で使用していることです[。フォームでコードを編集するif [ -f "fichier1" ] && [ -r "fichier1" ] && [ -w "fichier3" ] ...と、目的のコンテンツに近づきます。テストを分離したことに注意してください。これを組み合わせるとテストが失敗します-rf。テストを別々のテストに分割する必要があります。

関連情報