аргументы bash с кавычками в скрипте - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь создать (сложный) вызов программы в bash.

Программа ожидает список файлов, где имена файлов могут содержать пробелы.

Я строю вызов следующим образом:

for VAR in $ARR; do
    CALL_ARGS+=" \"${VAR}.csv\""
done

, а затем вызвать программу с ./program ${CALL_ARGS}

Когда $VAR равен, например, "a b c", я хотел бы получить ./program "a b c", но я получаю '"a' b 'c.csv"', что, очевидно, неправильно указано.

Я уже видел несколько похожих вопросов / ответов по StackOverflow, но, похоже, ни один из них не подходит для моей проблемы.

1 Ответ

0 голосов
/ 04 сентября 2018

Самый простой и безопасный способ обработки списков элементов, которые могут содержать пробелы (или различные другие символы) в Bash, - это использовать массивы. Например:

files=('a b c' 'd e' f)
args=()

for f in "${files[@]}" ; do
    args+=( "$f".csv )
done

./program "${args[@]}"
...