Почему эти вложенные параметры в сценарии оболочки POSIX разделяются по словам?

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

. Если вы это сделаете, у вас должна быть возможность загрузки с USB-накопителя.

Тем не менее, это необходимо только в том случае, если вы испортили раздел Windows. Если вы только испортили установку grub, вы можете исправить это, не переустанавливая windows.

2
14.02.2016, 23:27
1 ответ

В вашем первом случае аргументы, переданные в count_args , были интерпретированы оболочкой, оболочка увидела два слова - options и 1 2 затем передали их count_args .

Во втором случае, внутри двойных кавычек, все символы, кроме $ и \ , рассматриваются как буквальные. Оболочке слишком поздно интерпретировать одинарные кавычки, оболочка увидела содержимое переменной $ ARGS как длинную строку - параметры '1 2' , все символы как буквальные и не имеют особого значения для оболочки.

Использование $ {ARGS} без двойных кавычек сделало его подверженным разделению полей и расширению имени файла. При значении по умолчанию IFS у вас есть три разделенных слова: - параметры , '1 и 2' .

Лучший способ заархивировать это - использовать "$ @" :

#!/bin/sh

set -- --options '1 2'

./count_args "$@"
3
27.01.2020, 22:04

Теги

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