
이 오류와 다른 여러 오류를 발견했습니다. 중첩이 좋지 않거나 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}"
그냥 글을 쓸 텐데. 곱슬머리에는 기술적인 이유가 없습니다.