Как выполнить команду, разделенную в нескольких переменных в Bash?

Я хотел бы выполнить команду, сделанную из нескольких "частей".

php="php"
options="-l"

for f in `git diff-index --cached --name-only HEAD | grep -e '\(php\|phtml\)$'`; do
   if [ -f $f ]; then
       # Here I want to run my command defined
       # in $php and $options and put the result in
       # $php_lint var
       # like this command would do:
       # php_lint=$(php -l $f)
       # but with something like that:
       # php_lint=eval $php $options $f
   fi
done

Как я могу сделать это?

Обновление:

После борьбы на конкретной точке я задал этот вопрос:

Взгляните, это могло также помочь Вам.

4
задан 23 May 2017 в 15:39

1 ответ

Поместите опции в массив и разверните его как "${options[@]}"

Напр.

$ cmd=ls
$ options=(-a -l -d)
$ f="foo"

затем

$ result=$("$cmd" "${options[@]}" "$f")

предоставление

$ echo "$result"
drwxrwxr-x 2 user user 4096 Apr 20 08:07 foo
6
ответ дан 1 December 2019 в 09:20

Другие вопросы по тегам:

Похожие вопросы: