141 votes

Bash si sur une seule ligne

Je voudrais savoir comment écrire des conditions if à l'intérieur d'un script bash sur une seule ligne.

Par exemple, comment puis-je écrire ceci sur une seule ligne, puis en mettre une autre identique sur la suivante ?

if [ -f "/usr/bin/wine" ]; then
    export WINEARCH=win32
fi

Je pose cette question car j'ai un certain nombre d'alias dans mon .bashrc et j'ai le même .bashrc (synchronisé) sur plusieurs systèmes, mais je n'ai pas besoin de tous les alias sur chaque système. J'ai mis la plupart d'entre eux à l'intérieur d'instructions if, et tout fonctionne à merveille maintenant, mais ils prennent beaucoup de place, 3 lignes chacun plus la ligne blanche entre eux (j'aime les avoir facilement visibles).

Je vais également utiliser cette technique pour les variables d'environnement.

211voto

NSTJ Points 972

Vous l'écrivez comme tel :

if [ -f "/usr/bin/wine" ]; then export WINEARCH=win32; fi

Notez que cela pourrait également être écrit (comme suggéré par @glennjackman) :

[ -f "/usr/bin/wine" ] && export WINEARCH=win32

5voto

Alan Points 51

Je trouve aussi que le fait de taper n'importe quelle commande complexe if then else, d'appuyer sur la touche entrée, et après l'exécution, d'appuyer sur la flèche vers le haut. La ligne de commande répète bien sûr la dernière commande tapée, mais dans ce cas, elle met tout sur une seule ligne comme vous le souhaitez. C'est une façon de tricher, mais c'est efficace.

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