|
|
|
@ -17,14 +17,24 @@ while [ "$#" -gt 0 ]; do
@@ -17,14 +17,24 @@ while [ "$#" -gt 0 ]; do
|
|
|
|
|
shift |
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
# subshell so that we can cd without effecting the rest |
|
|
|
|
( |
|
|
|
|
set +e |
|
|
|
|
cd ./shared; |
|
|
|
|
$SUDO sh -x ./test.sh; |
|
|
|
|
echo $?; |
|
|
|
|
) 2>&1 | tee shared/output.txt |
|
|
|
|
if [ "$(cat shared/exitstatus.txt)" -ne 0 ]; then |
|
|
|
|
# - 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 |
|
|
|
|