Conditional pipeing...
Postat: 31 jan 2011, 10:27
Finns det något sätt att göra conditional pipeing, dvs att om ett kommando går bra, så ska resultatet pipe:as till ett annat kommando, men annars ska hela kedjan avbrytas...
En kedja/sekvens av kommandon utan pipeing som fungerar så kan ju utryckas som "a && b &&c" liksom en pipe-kedja som "a | b | c", men går det att kombinera detta och åstadkomma något som liknar "a &&| b &&| c", eller hur det nu ska uttryckas..?
[Edit] Det går givetvis lätt att åstadkomma detta genom att skriva resultatet från kommandon till en fil som nästa kommando läser in efter att man kollat status från det första kommandot etc. Men finns det något enkelt sätt att åstadkomma detta direkt i en pipe..?
[Edit igen] Tänkte att det kunde kanske vara bra att jag tar med anledningen till att jag behöver det här med...
Om jag kör t.ex "ls <nonexistent-file> | cat" så får jag success (0) som returstatus trots att "ls" misslyckas och orsaken till det är att pipe:n fortsätter med "cat" som i sin tur "lyckas" trots att det inte finns något att göra... I det läget skulle jag alltså behöva att pipe:n avbröts och att den felstatus som gjorde att det avbröts (den från "ls" alltså) returnerades...
En kedja/sekvens av kommandon utan pipeing som fungerar så kan ju utryckas som "a && b &&c" liksom en pipe-kedja som "a | b | c", men går det att kombinera detta och åstadkomma något som liknar "a &&| b &&| c", eller hur det nu ska uttryckas..?
[Edit] Det går givetvis lätt att åstadkomma detta genom att skriva resultatet från kommandon till en fil som nästa kommando läser in efter att man kollat status från det första kommandot etc. Men finns det något enkelt sätt att åstadkomma detta direkt i en pipe..?
[Edit igen] Tänkte att det kunde kanske vara bra att jag tar med anledningen till att jag behöver det här med...
Om jag kör t.ex "ls <nonexistent-file> | cat" så får jag success (0) som returstatus trots att "ls" misslyckas och orsaken till det är att pipe:n fortsätter med "cat" som i sin tur "lyckas" trots att det inte finns något att göra... I det läget skulle jag alltså behöva att pipe:n avbröts och att den felstatus som gjorde att det avbröts (den från "ls" alltså) returnerades...