Como executar um comando separado em várias variáveis no Bash?

4

Eu gostaria de executar um comando feito de várias "partes".

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

Como posso fazer isso?

Atualização:

Depois de lutar em um determinado ponto, fiz esta pergunta:

Por favor, dê uma olhada, também pode ajudá-lo.

    
por darckcrystale 24.04.2017 / 15:16

1 resposta

6

Coloque as opções em uma matriz e expanda-as como "${options[@]}"

Ex.

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

então

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

dando

$ echo "$result"
drwxrwxr-x 2 user user 4096 Apr 20 08:07 foo
    
por steeldriver 24.04.2017 / 15:30