Vous avez utilisé une citation simple plutôt que d'un backtick si votre variable var
est effectivement réglé sur une chaîne de caractères plutôt que le résultat de cette commande. Vous verriez que si vous la première variable Echoed:
pax$ var='grep -c 'abc' file1'
pax$ echo "[$var]"
[grep -c abc file1]
La version backtick serait:
var=`grep -c 'abc' file1`
Mais je voudrais suggérer à l'aide bash
si possible pour les scripts. Vous aurez du mal à trouver une distribution générale qui ne l'a pas par défaut et elle est considérée par certains comme plus puissante que les autres shells. En fait, sur certains systèmes, /bin/sh
estbash
.
Si vous pouvez aller que Rute, la $()
construction est généralement une meilleure idée puisque vous pouvez les imbriquer sans douleur:
var=$(grep -c 'abc' file1)