forked from josch/mmdebstrap
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
847 B
40 lines
847 B
#!/bin/sh |
|
|
|
set -eu |
|
|
|
SUDO= |
|
while [ "$#" -gt 0 ]; do |
|
key="$1" |
|
case "$key" in |
|
SUDO) |
|
SUDO=sudo |
|
;; |
|
*) |
|
echo "Unknown argument: $key" |
|
exit 1 |
|
;; |
|
esac |
|
shift |
|
done |
|
|
|
# - Run command with fds 3 and 4 closed so that whatever test.sh does it |
|
# cannot interfere with these. |
|
# - Both stdin and stderr of test.sh are written to stdout |
|
# - Write exit status of test.sh to fd 3 |
|
# - Write stdout to shared/output.txt as well as to fd 4 |
|
# - Redirect fd 3 to stdout |
|
# - Read fd 3 and let the group exit with that value |
|
# - Redirect fd 4 to stdout |
|
ret=0 |
|
{ { { { |
|
ret=0; |
|
( exec 3>&- 4>&-; env --chdir=./shared $SUDO sh -x ./test.sh 2>&1) || ret=$?; |
|
echo $ret >&3; |
|
} | tee shared/output.txt >&4; |
|
} 3>&1; |
|
} | { read -r xs; exit "$xs"; } |
|
} 4>&1 || ret=$? |
|
if [ "$ret" -ne 0 ]; then |
|
echo "test.sh failed" |
|
exit 1 |
|
fi
|
|
|