我发现了这个错误以及其他几个错误。我认为嵌套不太好或者 for 没有正确缩进或者没有一些分号。不管怎样,我已经尝试了很长一段时间来弄清楚,但没有成功。这是代码:
if [ "${runcmd}" != "echo" ]; then
statusmsg "Kernels built from ${kernelconf}:"
kernlist=$(awk '$1 == "config" { print $2 }' ${kernelconfpath}) for kern in ${kernlist:-netbsd}; do
[ -f "${kernelbuildpath}/${kern}" ] && \
echo " ${kernelbuildpath}/${kern}"
done | tee -a "${results}"
fi
它是 build.sh 文件的一部分。
答案1
这
var=value cmd ar1
cmd
if是一个 for 循环(既不是bash
也不是sh
),语法似乎不太有效。
sh
和都bash
给出语法错误:
foo=bar for f in ${foo:-BAR}; do echo $f; done
这就是你本质上正在做的事情。
(
- sh: 1: 为: 未找到
- bash:意外标记“do”附近出现语法错误
)
这个错误似乎会导致couldn't find fi
你的情况出现错误;
在单独的行上设置变量可以修复语法错误:
kernlist=$(awk '$1 == "config" { print $2 }' ${kernelconfpath})
for kern in ${kernlist:-netbsd}; do #...
笔记:
"$kernelbuildpath/$kern"
如果"${kernelbuildpath}/${kern}"
我是你,我只会写。卷发没有技术原因。