cudzysłów cytowany w zmiennej traktowanej inaczej po rozwinięciu do polecenia

Wyjaśnienie pytania poprzez przykłady ...

Demonstruje, że pojedyncze cudzysłowy po opcji --chapters są usuwane, gdy zmienna jest rozwijana (nie spodziewałem się tego):

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.

A teraz z jakiegoś powodu mkvpropedit otrzymuje podwójne cudzysłowy jako część nazwy pliku (ja też tego nie oczekiwałem):

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.

Powyższe polecenie echa wydaje się być poprawne. Umieszczenie tego samego tekstu w innym skrypcie daje oczekiwany rezultat:

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.

Czy ktoś mógłby wyjaśnić, dlaczego cytaty nie zachowują się zgodnie z oczekiwaniami. Uważam, że szukanie tego problemu jest trudne, ponieważ w sieci jest tak wiele innych cytatów. Nie wiedziałbym nawet, jak wyjaśnić pytanie bez przykładów.

Obawiam się, że pewnego dnia nazwa pliku w argumencie zawiera jakiś znak, który łamie wszystko, stąd może nadmierne cytowanie. Nie rozumiem, dlaczego to samo polecenie wykonuje się inaczej, gdy jest wpisywane bezpośrednio w skrypcie lub gdy jest dostarczane za pomocą zmiennej. Proszę, oświeć mnie.

Dziękuje za przeczytanie.

questionAnswers(1)

yourAnswerToTheQuestion