0

I want to run a command from a sub-bash and I need the return code from it; actually it's running a pipeline and I need the PIPESTATUS array, or at least one component.

This was my best guess and it does not work. I just get a 0. Since bash did not error it makes sense, it's just not what I need. Help?

bash -c "echo 123 | grep abc | sort; exit ${PIPESTATUS[1]}"; echo $?
0
TimDev
  • 85
  • 10

1 Answers1

1

Try with single quotes:

bash -c 'echo 123 | grep abc | sort; exit ${PIPESTATUS[1]}'; echo $?

Sample runs:

bash -c 'echo 123 | grep abc | sort; exit ${PIPESTATUS[1]}'; echo $?
1

bash -c 'echo 123 | grep abc | sort; echo status is ${PIPESTATUS[@]}'; echo $?
status is 0 1 0
0

There is a related post on this.

sungtm
  • 547
  • 3
  • 12