Почему сначала выполняются подстановки команд?

Я узнал, что раздел — это ПРОСТО блок в хранилище, если он смонтирован, то вы можете редактировать его содержимое..

Когда я установил arch linux, мне пришлось смонтировать корневой раздел в папку /mnt на usb live arch, поэтому root был (/mnt ), затем я смонтировал домашний раздел в "mkdir'd" папка в /mnt/home < --, поэтому home был смонтирован в корневой папке..

то, что вы смонтировали раздел в папке, не означает, что этот раздел ПЕРЕМЕЩЕЛСЯ в папку и теперь живет там, так что... с разделами, "размонтированными", можно безопасно удалить любой раздел, потому что они просто блоки в хранилище и их расположение отдельно.

В конце концов, не имело значения, ошибся, удалил все эти гигабайты, теперь мне грустно, я впал в супер-депрессию, иногда париться — не лучшая идея, всегда имейте план, дети. и взрослые.

0
04.03.2021, 17:23
1 ответ

Причина в том, что подстановка команд, как и любое другое расширение оболочки, предназначена для предоставления динамических средств генерации параметров строки команды -для выполнения команды. Таким образом, чтобы запустить cmd1с выводом cmd2и cmd3в качестве аргументов, эти два должны быть запущены в первую очередь.

Точный порядок расширения оболочки можно найти, например. в руководстве Bash . Подстановка команд занимает второе место после раскрытия фигурных скобок и на том же ранге, что и раскрытие тильды, параметр (, то есть раскрытие переменной )и арифметическое раскрытие. Те расширения, которые имеют одинаковый ранг, оцениваются "слева -по -справа" , то есть в том порядке, в котором они появляются в командной строке.

Это требует, чтобы в случае вложенных замен, т.е.

cmd1 $(cmd2 $(cmd3)) $(cmd4)

порядок будет следующим:cmd3->cmd2->cmd4-> cmd1, так как первым расширением будет $(cmd2 $(cmd3)), которое само требует расширения $(cmd3), а затем расширение $(cmd4), до того, как результаты будут переданы вызову cmd1.

4
18.03.2021, 22:27

Теги

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