Разделение слов внутри обратных кавычек

В чем разница между строкой №2 и строкой №4 в скрипте (папка foo bar (без кавычек) существует):

FOOBAR="foo bar"
echo `ls -la "$FOOBAR"`
args="-la \"$FOOBAR\""
echo `ls $args`

Выход:

total 0 drwxr-xr-x 2 tervlad LD\Domain Users 68 15 ноя 11:47 . drwxr-xr-x 7 tervlad LD\Domain Users 238 16 ноя 18:01 ..
ls: "foo: No such file or directory
ls: bar": No such file or directory

Как я могу заставить линию № 4 работать правильно?


person tereshinvs    schedule 16.11.2016    source источник
comment
Отличие в том, что кавычки.   -  person fedorqui 'SO stop harming'    schedule 16.11.2016
comment
$FOOBAR расширяется в назначении args. Также кавычки интерпретируются перед расширением $, поэтому кавычки являются буквальными частями расширенной строки.   -  person 123    schedule 16.11.2016
comment
BashFAQ #50 прямо в точку.   -  person Charles Duffy    schedule 16.11.2016
comment
... и обратные кавычки не имеют к этому никакого отношения. У вас было бы точно то же поведение, что и у ls $args, без использования обратных кавычек.   -  person Charles Duffy    schedule 16.11.2016


Ответы (1)


$FOOBAR расширяется в назначении args. Также кавычки интерпретируются перед расширением $, поэтому кавычки являются буквальными частями расширенной строки.

Просто используйте массив.

args=( "-la" "$FOOBAR" )
ls "${args[@]}"
person 123    schedule 16.11.2016