bash意外令牌然后错误

时间:2013-10-26 08:03:01

标签: bash

我编写了一个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

错误:意外令牌附近的语法错误,“然后”。

我尝试了另外一种变体:

#! /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]

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

2 个答案:

答案 0 :(得分:7)

您在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进行编辑,那么你的拼写会有语法颜色......

答案 1 :(得分:-2)

let fetchRequest:NSFetchRequest<Products> = Products.fetchRequest()
fetchRequest.returnsObjectsAsFaults = false
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "productId", ascending: false)]
fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: (UIApplication.shared.delegate as? AppDelegate)!.persistentContainer.viewContext, sectionNameKeyPath: "pack.name", cacheName: nil) as? NSFetchedResultsController<NSFetchRequestResult>
fetchedResultsController!.delegate = self
try fetchedResultsController!.performFetch()



func numberOfSections(in tableView: UITableView) -> Int {
    return fetchedResultsController?.sections?.count ?? 0
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return fetchedResultsController?.sections![section].name
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return fetchedResultsController!.sections![section].numberOfObjects
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let product = fetchedResultsController!.object(at: indexPath) as! Products
}

尝试一下!