заменить с позиции 11 -30 и 48 -70 в файле, как показано ниже

Несмотря на то, что в других ответах объяснялось, как исправить скрипт, я задался вопросом, в чем технически заключается ошибка. Я думаю, что единственный допустимый синтаксис, в котором bash позволяет слову в команде быть без кавычек и без экранирования (, - это определение функций. Итак, bash увидел (и сразу подумал, что это должно быть определение функции с именем [, но затем вы добавили '$#', а bash ожидал только ), вот почему вы получили эту синтаксическую ошибку. Если это не должно было быть определением функции, то кто знает, для чего оно предназначалось. Все остальное после (, кроме ), вызвало бы ту же синтаксическую ошибку:

$ echo ( foo )
bash: syntax error near unexpected token `foo'

Если удалить то, что следует за (, что не соответствует синтаксису определения функции, вы получите:

$ [ ( ) ( -f "$1" )

Что заканчивается определением функции[:

$ [
bash: -f: command not found
-6
29.11.2021, 00:48
0 ответов

Теги

Похожие вопросы