2

我编写了一个 bash 脚本,当我测试一个变量是否为空的条件时,我收到一个错误。

下面是一个示例脚本:

我没有提到为变量 a 和 fne 赋值而执行的命令,但是

#! /bin/bash

for f in /path/*
do
    a=`some command output`
    fne=`this command operates on f`
    if[ -z "$a" ]
    then
        echo "nothing found"
    else
        echo "$fne" "$a"
    fi
done

错误:意外标记“then”附近的语法错误。

我尝试了另一种这样的变体:

#! /bin/bash

for f in /path/*
do
    a=`some command output`
    fne=`this command operates on f`
    if[ -z "$a" ]; then
        echo "nothing found"
    else
        echo "$fne" "$a"
    fi
done

再次出现同样的错误。

当我尝试以这种方式进行比较时:

if[ "$a" == "" ]; then

再次出现同样的错误。

我不确定错误的原因是什么。变量a的值是这样的:

有它的东西(1):[x,y]

它包含空格、括号、逗号、冒号。相比之下,我将变量名称用双引号括起来。

4

1 回答 1

8

您缺少以下空格if

#! /bin/bash

for f in /path/*
do
    a=`some command output`
    fne=`this command operates on f`
    if [ -z "$a" ]; then
        echo "nothing found"
    else
        echo "$fne" "$a"
    fi
done

旁注:如果您vi用于编辑,它会为您的错字着色...

于 2013-10-26T08:05:59.457 回答