![缺少 ']' 我没有发现任何问题,但它向我显示了这个问题](https://linux22.com/image/130423/%E7%BC%BA%E5%B0%91%20'%5D'%20%E6%88%91%E6%B2%A1%E6%9C%89%E5%8F%91%E7%8E%B0%E4%BB%BB%E4%BD%95%E9%97%AE%E9%A2%98%EF%BC%8C%E4%BD%86%E5%AE%83%E5%90%91%E6%88%91%E6%98%BE%E7%A4%BA%E4%BA%86%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98.png)
我写了这个脚本:
#!/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
您的代码中至少存在三个缺陷:
[ ... && ... ]
应写为[ ... ] && [ ... ]
.-rf
甚至-wf
都不是有效的运算符。你想达到什么目的?- 在第 7 行中,您可能需要编写
"$fichierN"
而不是"fichierN"
.
答案2
正如评论中提到的 use Ralph Ronquist 那样,您的问题是您&&
在测试表达式中使用[
。在表单中编辑代码if [ -f "fichier1" ] && [ -r "fichier1" ] && [ -w "fichier3" ] ...
,它应该会让您更接近您想要的内容。请注意,我将测试分开 - 当像这样组合时它们会失败-rf
;您需要将它们分成单独的测试。