Linux bash if语句应为一元运算符

Linux bash if语句应为一元运算符,linux,bash,if-statement,Linux,Bash,If Statement,我正试着做一些类似的事情 if (!regular file || symbolic link) continue 到目前为止,我得到的是 st1=$( -f "${ARRAY[$i]}" ) if [ "$st1" -eq 0 ] 但是我得到了“预期的一元运算符错误”您不需要创建中间st1变量。只需使用: if [[ ! -f "${ARRAY[$i]}" || -h "${ARR

我正试着做一些类似的事情

if (!regular file || symbolic link)
    continue
到目前为止,我得到的是

st1=$( -f "${ARRAY[$i]}" )                                                 
 if [ "$st1" -eq 0 ] 

但是我得到了“预期的一元运算符错误”

您不需要创建中间
st1
变量。只需使用:

if [[ ! -f "${ARRAY[$i]}" || -h "${ARRAY[$i]}" ]]; then
    echo "${ARRAY[$i]} link exists"
fi
您使用的
st1=$(-f“${ARRAY[$i]}”)
不正确,将导致语法错误:

-f: command not found

因为shell将考虑<代码> f>代码>作为命令名。

代码< > [[[-f$file ] ] [[[-L$Fix] ] < /C> > <代码> ST1= $(-f)${{数组[$i] } ] /<代码>是没有意义的。
$(…)
构造在括号之间需要一个命令
-f
不是命令;它是
测试
[
[[
命令。您应该得到一个错误,如
bash:-f:command未找到
,而不是
预期的一元运算符
;您复制并粘贴了准确的代码了吗?好的,但问题出在哪里?我想我提到了中间变量的创建。让我添加更多解释。请不要用代码格式包装非代码。:P(现在的答案更好了,假设它是正确的(我不知道))它应该是OR运算符而不是AND,但其余的都有帮助,谢谢。哦,对了,它现在更新了。很高兴一切都解决了。