Comments 5
Это интересно. Я всегда считал, что форк происходит после expansion. Т.е. сперва шелл строит строку и раскрывает все, что надо раскрыть (в частности $((i++)) ) и только потом уже готовая строка форкается в новый процесс.
+1
ShellCheck правильно ругается, не дочитав статью мне сразу было понятно, что там нужны кавычки или присвоить значение переменной, даже если использовать значение переменной, то в имени файла нужны кавычки, а теперь поищите в интернете ответ зачем там нужны кавычки. ShellCheck как раз защищает от unpredictable behavior и чтобы вы в своих скриптах нечаянно не сделали, что типа rm -fr /. У меня 0.7.2 и делает такое предупреждение.
-1
Кавычки конечно да, но статья совершенно о другом, стоит все таки прочитать до конца(хотя бы до середины), а то получается как на картинке...
картинка
+3
vaniacer там можно до конца не дочитывать, так как сразу бросается гавнокод стайл и антипатерн, инкремент не желательно в шаблоне использовать, от выстрела себе в ногу какраз все правильно shellcheck защитил, сначала делается инкремент ((i++)), а дальше в шаблон подставляется ${i}, а если совсем по хорошему делать, то в пути к файлам желательно использовать ${i:?}.
Что автор не понимает поведение BASH это лично его безграмотность, а не косяк shellchecker.
Что автор не понимает поведение BASH это лично его безграмотность, а не косяк shellchecker.
-3
Для встроенных команд, которые не разветвляются, ...
Промптом переводил?
0
Sign up to leave a comment.
Неожиданные подвохи при перенаправлениях оболочки в $((i++))