我想做沿bash的if语句有望元运算符
if (!regular file || symbolic link)
continue
行的东西我至今是
st1=$(-f "${ARRAY[$i]}")
if [ "$st1" -eq 0 ]
,但我得到的“预期一元操作错误”
我想做沿bash的if语句有望元运算符
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
作为命令名称。
好的,但问题是什么? – 2014-10-17 11:40:32
我想我提到了*中间变量*创建。让我加入更多解释。 – anubhava 2014-10-17 11:41:46
请不要在代码格式中包装非代码。 :P(现在的答案是更好的,假设它是正确的(我不知道)) – 2014-10-17 11:43:04
if [[-f $ file]] ||有什么问题? [[-L $文件]]'? – DevSolar 2014-10-17 11:33:21
'st1 = $(-f“$ {ARRAY [$ i]}”)'没有意义。 $(...)'构造需要在括号之间有一个*命令*。 '-f'不是一个命令;它是'test',''''或'[['command。你应该得到一个像'bash:-f:command not found'错误,而不是'expect unary operator';你是否复制并粘贴你的*精确*代码? – 2014-10-17 18:24:23