Объединяющий массив Bash - PullRequest
       8

Объединяющий массив Bash

0 голосов
/ 11 октября 2018

Есть ли способ присоединить (при правильном цитировании и экранировании) массив bash, чтобы он дал мне строку, подходящую для передачи в bash -c?

Причина : Я хочунаписать функцию foo, такую, что когда я сделаю это:

foo app "hello world.txt"

, она сделает это:

sudo -u myuser ENVVAR=somevalue bash -c "perl app \"hello world.txt\""

1 Ответ

0 голосов
/ 11 октября 2018

bash -c принимает первый аргумент в качестве командной строки и присваивает оставшиеся аргументы позиционным аргументам, начиная с $0.Таким образом, вам не нужно ничего цитировать, просто передайте аргументы:

function foo () {
    sudo -u myuser ENVVAR=somevalue bash -c 'perl "$0" "$@"' "$@"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...