git - Piping functions with other commands in linux -
i pipe function normal commands in linux. please note these commands put .sh script (i use bash shell). example, have me command follows:
git diff --name-only head~1..head -z | xargs -0 dirname | catch_exceptions >> extracted_dir_names
i have written catch_exceptions
function above command , contains 2 sed delete statements. if pipe 2 sed commands in function work if put them 1 after other don't. explain why , how work around can done? in advance.
this works:
function catch_exceptions { sed '/^\./d' | sed '\#this/path/alone#d' } pushd /path/to/direc rm -f extracted_directories.txt git diff --name-only head~1..head -z | xargs -0 dirname | remove_duplicates | catch_exceptions >> extracted_directories.txt cat extracted_directories.txt popd }
but when replace catch_exceptions with:
function catch_exceptions { sed '/^\./d' sed '\#this/path/alone#d' }
it doesn't work.
with first function, output of first sed
command fed second, when first completes, second too.
with second function, output of first sed
sent direct standard output, , when finishes second sed
start. second sed
has standard input still connected pipe, first 1 read data, second sed
gets nothing process.
if want both sed
commands read same pipe, review two children reading pipe, , consider using tee
process substitution. review redirect stdout of 1 process 2 processes.
Comments
Post a Comment