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,但其余的都有帮助,谢谢。哦,对了,它现在更新了。很高兴一切都解决了。