缺少 ']' 我没有发现任何问题,但它向我显示了这个问题

缺少 ']' 我没有发现任何问题,但它向我显示了这个问题

我写了这个脚本:

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

您的代码中至少存在三个缺陷:

  1. [ ... && ... ]应写为[ ... ] && [ ... ].
  2. -rf甚至-wf都不是有效的运算符。你想达到什么目的?
  3. 在第 7 行中,您可能需要编写"$fichierN"而不是"fichierN".

答案2

正如评论中提到的 use Ralph Ronquist 那样,您的问题是您&&在测试表达式中使用[。在表单中编辑代码if [ -f "fichier1" ] && [ -r "fichier1" ] && [ -w "fichier3" ] ...,它应该会让您更接近您想要的内容。请注意,我将测试分开 - 当像这样组合时它们会失败-rf;您需要将它们分成单独的测试。

相关内容