кавычки bash в переменной обрабатываются по-разному при расширении до команды

Объясняя вопрос на примерах ...

Демонстрирует, что одинарные кавычки после --chapters будут экранированы при раскрытии переменной (я этого не ожидал):

prompt@ubuntu:/my/scripts$ cat test1.sh
#!/bin/bash
actions="--tags all:"
actions+=" --chapters ''"
mkvpropedit "$1" $actions

prompt@ubuntu:/my/scripts$ ./test1.sh some.mkv
Error: Could not open '''' for reading.

И теперь по какой-то причине mkvpropedit получает двойные кавычки как часть имени файла (я тоже этого не ожидал):

prompt@ubuntu:/my/scripts$ cat test1x.sh
#!/bin/bash
command="mkvpropedit \"$1\""
command+=" --tags all:"
command+=" --chapters ''"
echo "$command"
$command

prompt@ubuntu:/my/scripts$ ./test1x.sh some.mkv
mkvpropedit "some.mkv" --tags all: --chapters ''
Error: Could not open '''' for reading.

Вышеприведенная команда echo'd кажется правильной. Помещение того же текста в другой скрипт дает ожидаемый результат:

prompt@ubuntu:/my/scripts$ cat test2.sh
#!/bin/bash
mkvpropedit "$1" --tags all: --chapters ''

prompt@ubuntu:/my/scripts$ ./test2.sh some.mkv
The file is being analyzed.
The changes are written to the file.
Done.

Может ли кто-нибудь объяснить, почему цитаты не ведут себя, как ожидалось. Поиск по этому вопросу мне показался сложным, так как в Интернете так много других дискуссий по цитированию. Я бы даже не знал, как объяснить вопрос без примеров.

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

Спасибо за чтение.

Ответы на вопрос(1)

Ваш ответ на вопрос