Реквестую знатаков баша.
Есть скрипт, предположим, на PHP:
<?php
print_r($_SERVER['argv']);
Выводит аргументы командной строки.
Запускаем:
$ php -f script.php -- --message="This is message" arg
Array
(
[0] => script.php
[1] => --message=This is message
[2] => arg
)
Парсер аргументов как и надо распознал, что сообщение в кавычках и не стал рубить опцию по пробелам (правда кавычки выкинул).
Теперь скрипт на баше, который вызывает скрипт на PHP c теми аргументами, которые ему переданы:
#!/bin/bash
echo "php -f script.php -- $@"
php -f script.php -- $@
Запускаем:
php -f script.php -- --message=This is message arg
Array
(
[0] => script.php
[1] => --message=This
[2] => is
[3] => message
[4] => arg
)
Херня. Баш вырезал кавычки и --message распалось на 3 аргумента.
Как это победить?
Перебирать все аргументы, заключать целиком в кавычки и формировать исполняемую команду?
Ёбаные эмоджи, которые лезут во все щели, стоит только набрать двоеточие начинают раздражать.
Эмоджам место на
Unicode Table - лучший сайт по теме эмоджи в Санкт-Петербурге.
Резюмирую: "$@" не содержит кавычек. Что делать?
Unicode-Zeichentabelle
Alle Unicode-Zeichen auf einer Seite mit den Namen und Beschreibungen: ★ ☂ ☻ ♞ ☯ ☭ ☢ € → ♫ ✇ ⇧ ☮ ⌘ ☘ ☊ ♔ ♕ ♖ ☦ ✝ ❖ ➎ ♂ ♀
unicode-table.com