2010-11-12 21 views
0

L'objectif est de ne même pas démarrer $ foo s'il n'y a pas d'entrée.

Cela peut être utile si foo = "diff - xyz", et que l'entrée est manquante ou vide. Sinon, diff produirait tout le "xyz" comme différence.

Le problème original est que "cat doesnotexist | diff-exists" sort le contenu de "exists" (préfixé par ">"), alors que je veux que le tube entier échoue. Ma solution actuelle est:

cat doesnotexist | (read first|| exit 1; (echo "$first"; cat) | diff - exists) 

, mais je voudrais une plus courte.

Répondre

0
[ -f doesnotexist ] && diff doesnotexist exists 

J'ai enlevé le tuyau, il n'a aucune valeur ajoutée dans votre exemple. Strictement, cela ne laisse pas le diff échouer, il n'est tout simplement pas exécuté.

+0

Eh bien, l'entrée est sur un noeud distant, et le diff est en cours d'exécution localement, donc l'utilisation de -f serait encore plus verbeuse que l'extrait de titre. Ainsi, la valeur ajoutée du tube est qu'il récupère les données distantes. Son entrée ressemble à "ssh -x -e none -C who @ où chat doesnotexist |", mais cela est apparu comme un détail inutile pour moi, donc je n'ai pas dit. :-) – Rainer

+0

Dans ce cas vous pourriez utiliser un "scp -C who @ where: doesnotexist. && diff doesnotexist existe" –

+0

Ouais, je pourrais aussi bien. Besoin de nettoyer "doesnotexist" après, mais c'est plus direct. Merci. – Rainer