On AIX, /bin/sh causes a testsuite failure with an output like this:

    Running 
/home/collinfunk/findutils-4.10.0.40-d4417/find/testsuite/find.gnu/execdir-multiple.exp
 ...
    FAIL: execdir-multiple.new-O0, ./runme[6]: syntax error at line 7 : 
`newline or ;' unexpected
    ./runme[6]: syntax error at line 7 : `newline or ;' unexpected
    ./runme[6]: syntax error at line 7 : `newline or ;' unexpected
    ./runme[6]: syntax error at line 7 : `newline or ;' unexpected

Here is a small test program to show the issue:

    $ cat test.sh 
    #!/bin/sh
    for arg;
    do
      echo "$arg"
    done
    $ ./test.sh a b c
    test.sh[3]: 0403-057 Syntax error at line 4 : `newline or ;' is not 
expected.

But, if we move the 'do' AIX /bin/sh no longer chokes:

    $ cat test.sh 
    #!/bin/sh
    for arg; do
      echo "$arg"
     done
    bash-5.2$ ./test.sh a b c
    a
    b
    c

Normally I don't think this is worth fixing. But since it only affects
one test case I have attached a patch that fixes it.

Collin

>From c46de123b5e876ad7c50db113551f04d04faf5b1 Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Sat, 25 Jan 2025 21:53:17 -0800
Subject: [PATCH] tests: adjust shell syntax that breaks AIX /bin/sh

* find/testsuite/find.gnu/execdir-multiple.exp: Move the 'do' of a for
loop to the same line so AIX doesn't fail.
---
 find/testsuite/find.gnu/execdir-multiple.exp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/find/testsuite/find.gnu/execdir-multiple.exp b/find/testsuite/find.gnu/execdir-multiple.exp
index f292fffa..4ce23c3d 100644
--- a/find/testsuite/find.gnu/execdir-multiple.exp
+++ b/find/testsuite/find.gnu/execdir-multiple.exp
@@ -22,8 +22,7 @@ set -e
 here=`pwd`
 d=`basename $here`
 
-for arg;
-do
+for arg; do
   echo "$d" "$arg"
 done | LC_ALL=C sort
 }
-- 
2.48.1

Reply via email to