私は次のスクリプトを書いた。
#!/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つの欠陥があります。
[ ... && ... ]
で書く必要があります[ ... ] && [ ... ]
。-rf
-wf
有効な演算子でもありません。何を達成したいですか?"$fichierN"
行7では代わりに書くこともできます"fichierN"
。
答え2
コメントでRalph Ronquistを使用すると述べたように、問題は&&
テスト式で使用していることです[
。フォームでコードを編集するif [ -f "fichier1" ] && [ -r "fichier1" ] && [ -w "fichier3" ] ...
と、目的のコンテンツに近づきます。テストを分離したことに注意してください。これを組み合わせるとテストが失敗します-rf
。テストを別々のテストに分割する必要があります。