70 votes

Inline si script shell

Est-il possible d'exécuter un script shell en ligne de commande comme ceci :

 counter=`ps -ef | grep -c "myApplication"`; if [ $counter -eq 1 ] then; echo "true";
>

L'exemple ci-dessus ne fonctionne pas, je n'obtiens que le caractère > , pas le résultat que j'essaie d'obtenir, c'est "vrai"

Lorsque j'exécute ps -ef | grep -c "myApplication j'obtiens 1 sortie. Est-il possible de créer un résultat à partir d'une seule ligne dans un script ? Merci

8voto

DigitalRoss Points 80400

Oui, avec des problèmes de syntaxe résolus

Cela a presque fonctionné. La syntaxe correcte est :

 counter=`ps -ef | grep -c "myApplication"`; if [ $counter -eq 1 ]; then echo "true"; fi

Mais notez que dans une expression de ce type impliquant ps et grep , le grep correspondra généralement à lui-même car les caractères "grep -c Myapplication" apparaissent dans la liste ps. Il existe plusieurs façons de contourner cela, l'une d'entre elles consiste à rechercher quelque chose comme [M]yapplication .

2voto

minhas23 Points 365

J'utilise Mac OS et le suivi a très bien fonctionné

 $ counter=`ps -ef | grep -c "myApplication"`; if [ $counter -eq 1 ]; then echo "true";fi;

vrai

L'espace est nécessaire après [ et avant ]

0voto

Ruslan Points 196

J'avais du mal à combiner à la fois plusieurs lignes dans la commande et à obtenir ses résultats dans une variable (pas un fichier) et à trouver cette solution :

     FRA_PARAM="'db_recovery_file_dest'"
    FRA=$(
    sqlplus -S "/as sysdba" <<EOF
set echo off head off feed off newpage none pages 1000 lines 1000
select value from v\$parameter where name=$FRA_PARAM;
exit;
EOF
        )

Veuillez noter que le mot entre guillemets simples a été remplacé, car sinon je recevais sa substitution automatique en guillemets doubles... ksh, HP-UX.

Espérons que cela sera utile pour quelqu'un d'autre aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X