shell: How to capture stderr output depending on a flag | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
+ 7

shell: How to capture stderr output depending on a flag

Someone would be able to help me with the TODO in shell/bash which can be seen at https:// github.com/davorpa/shell-utils/commit/230f71a9b2400acc24a7e92889b17bb8cd8b21a4#diff-6c619df767c9a45741832bd40be5d60ba2b2b2b45741832bd40bed6024ba2b1 Is there some approach to capture the output in a local variable or with pipes and conditionally print it afterwards? I have already tried many ways like with command substitution and pipes, but the original output loses colors... escapes. With file descriptors I still do not clarify very well and I always fail. Thanks for support

9th Sep 2021, 10:06 PM
David Ordás
David Ordás - avatar
4 Answers
+ 4
Yes, there are some ways to capture the output of a command bro. Most of extern commands output something to stdout (Standard Output). You can capture that output, for example, for example, using `` and the command inside of them. For example: output=`echo "hi to everybody"` echo "$output" Output: Hi to everybody Hope this help you, if you're still facing problems, you can DM me, and I will help you😊😀
10th Sep 2021, 5:54 AM
Hacker-KR4636
Hacker-KR4636 - avatar
+ 1
I've read a lot about theory but not fresh with practice and always failing - normal local ecode; ( my-cmd "arg" ) && ecode=$? || ecode=$? - command substitution. $() or legacy `` local output; output=$(my-cmd "arg") local ecode=$? echo -e "$ecode $output" printf '%s %s\n' "$ecode" "$output" - raw eval / exec eval "$@" exec "$0" "$@" - redirect file descriptors: my-cmd "arg" 2>/dev/null #ignore stderr my-cmd "arg" >> file.txt #append all 2 file - temp fds: 😖 { var="$( { my-cmd; } 2>&1 1>&3 3>&- )"; } 3>&1; - pipes my-cmd "arg" | tee ... - descriptor context exec (😲bashismo) local var; my-cmd "arg" 2> >( read var <<<&1 ) three first is the unique I know use more or less fine. With command substitution I see in my terminal that colors send by original command are lost. it's rare because new lines don't. with pipes I lost exit code of my-cmd I misunderstand the others: syntax, advantages/disadvantages too much to learn 😥
10th Sep 2021, 1:34 PM
David Ordás
David Ordás - avatar
10th Sep 2021, 2:25 PM
David Ordás
David Ordás - avatar
0
Yes, that's correct bro👍😀
10th Sep 2021, 3:11 PM
Hacker-KR4636
Hacker-KR4636 - avatar