このエラーと他のいくつかのエラーが見つかりました。入れ子が悪い、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: for: 見つかりません
- bash:予期しないトークン「do」の近くに構文エラーがあります。
)
couldn't find fi
このエラーが原因でエラーが発生しているようです。
別の行に変数を設定すると、構文エラーが修正されます。
kernlist=$(awk '$1 == "config" { print $2 }' ${kernelconfpath})
for kern in ${kernlist:-netbsd}; do #...
メモ:
"$kernelbuildpath/$kern"
私があなたならば、"${kernelbuildpath}/${kern}"
ただ文章を書くでしょう。カールには技術的な理由はありません。