4 votes

Comment exécuter une commande séparée en plusieurs variables dans Bash ?

Je voudrais exécuter une commande composée de plusieurs "morceaux".

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

Comment puis-je le faire ?

Mise à jour :

Après avoir lutté sur un point particulier, j'ai posé cette question :

Jetez-y un coup d'œil, cela pourrait aussi vous aider.

6voto

steeldriver Points 118154

Mettez les options dans un tableau, et développez-le comme suit "${options[@]}"

Ex.

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

puis

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

donner

$ echo "$result"
drwxrwxr-x 2 user user 4096 Apr 20 08:07 foo

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X