Почему \ n в bash расширяется до n?

Когда дело доходит до операции оболочки , я могу понять первый шаг, но второй шаг немного озадачивает меня. Вот мое понимание:

Сначала оболочка разбивает ввод на слова и операторы, а затем выполняет действия в соответствии с правилами цитирования. Вот некоторые из моих вопросов. Когда я выполняю:

$ \n
bash: n: command not found

Почему n: команда не найдена ? not \ n: команда не найдена ?

$ $'\n'
bash: $'\n': command not found

Почему не выполняется цитирование ANSI-C?

Между прочим, когда входными данными является файл сценария, как он разбивается на слова и операторы? Построчно или целиком?

0
26.02.2017, 23:39
1 ответ

Обратная косая черта заключает в кавычки следующий символ (см. ЦИТАТУ в man bash ). \ n поэтому интерпретируется как n (и, будучи первым словом команды, это предотвратит раскрытие псевдонима, см. НИКНЕЙМЫ в man bash ).

$ '\ n' интерпретируется как цитируемый ANSI-C. Bash просто использует те же кавычки, чтобы показать проблемный характер. Вы можете получить ту же ошибку из

'
'

, что эквивалентно ей.

Процесс разделения слов описан в начале man bash . Если вы сомневаетесь, задайте более конкретный вопрос или посмотрите исходный код .

2
28.01.2020, 02:34

Теги

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