Отсутствует do
в моей команде.
Согласно комментарию @ CharlesDuffy, это явно проблема, связанная с опечаткой / отсутствующим синтаксисом.
What I wrote: for f in todo/family/* ; echo "$f" ; done
# ^ missing do
Bash expected: for f in todo/family/* ; do echo "$f" ; done
Ясно, что эта ошибка / опечатка виднаиспользуя spellcheck.net (еще один замечательный ресурс) - спасибо Чарльзу.
Как проверить ошибки синтаксиса, связанные с Bash:
1.Перейдите на shellcheck.net и вставьте его в:
#!/bin/sh
for f in todo/family/* ; echo "$f" ; done
Вы ясно увидите ошибку:
$ shellcheck myscript
Line 3:
for f in todo/family/* ; echo "$f" ; done
^-- SC1073: Couldn't parse this for loop. Fix to allow more checks.
^-- SC1058: Expected 'do'.
^-- SC1072: Expected 'do'. Fix any mentioned problems and try again.
Добавьте do
с пробелом, простодо echo
и все проверяется:
#!/bin/sh
for f in todo/family/* ; do echo "$f" ; done
в spellcheck.net - вы видите, что ошибки нет.Удалите do
, и вы увидите, в чем заключалась моя проблема.
https://github.com/koalaman/shellcheck#installing