Это потому, что $ @
- это массив, а цитирование массивов имеет другие правила:
"$ {array [@]}"
или "$ @"
расширяется до элементов массива «$ {array [*]}»
или «$ *»
расширяется до элементов массива, к которым присоединяется первый символ из $ IFS
переменная. Попробуйте использовать несколько аргументов, некоторые из них содержат пробелы:
./foo.sh 'one two' three
Переменные не раскрываются в одинарных кавычках.
sudo -S bash -c '(printf '%s' "OTHER_PASSWORD" | ... luksFormat $storage -)'
~~~~~~~~
Обратите внимание, что кавычки вокруг %s
на самом деле означают, что строка не заключена в кавычки (как показывает подсветка синтаксиса), но, к счастью, это не имеет значения, поскольку %s
не имеет специального значения.