There is some issue with parsing of redirection options
on some shells. For example:

  $ (exec -a name true) 2>&1 >/dev/null || echo "failed"
  sh: 10: exec: -a: not found
  failed

  $ (exec -a name true) >/dev/null 2>&1 || echo "failed"
  failed

So, the order of redirections matters for some reason.
Let's replace our current version with simple redirection of stderr.
This version seems to work in most of shells except [t]csh. But it's
really tricky to write portable redirections that works with csh and
this shell will not be used by the testsuite on most of the systems.

With the new version:

  # cat test.sh
  ((exec -a myname true 2>/dev/null) && echo "OK") || echo "fail"

  # sh ./test.sh
  fail
  # bash ./test.sh
  OK
  # tcsh ./test.sh
  -a: Command not found.
  fail

Signed-off-by: Ilya Maximets <[email protected]>
---
 tests/ovs-macros.at | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/ovs-macros.at b/tests/ovs-macros.at
index 4a21f72b2..10593429d 100644
--- a/tests/ovs-macros.at
+++ b/tests/ovs-macros.at
@@ -173,7 +173,7 @@ uuidfilt () {
 # prints a message if a bunch of identical processes are running.
 #
 # Not all shells support "exec -a NAME", so test for it.
-if (exec -a myname true 2>&1 >/dev/null); then
+if (exec -a myname true 2>/dev/null); then
     run_as () {
         (exec -a "$@")
     }
-- 
2.17.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to