我编写了一个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]
它包含空格,括号,逗号,冒号。我将变量名称用双引号括起来。
答案 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
}
尝试一下!