On Wed, 09/20 08:20, Eric Blake wrote: > On 09/19/2017 10:25 PM, Fam Zheng wrote: > > Signed-off-by: Fam Zheng <f...@redhat.com> > > --- > > scripts/archive-source.sh | 51 > > +++++++++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 51 insertions(+) > > create mode 100755 scripts/archive-source.sh > > > > > + > > +if test -n "$submodules"; then > > + { > > + git ls-files || error "git ls-files failed" > > + for sm in $submodules; do > > + (cd $sm; git ls-files) | sed "s:^:$sm/:" > > + if test ${PIPESTATUS[0]} -ne 0 -o $? -ne 0; then > > This relies on 'test ... -o ...' which is non-portable. It "works" > because there is no possible ambiguity in the contents of $PIPESTATUS > that could cause a different parse of the test arguments, but I tend to > discourage any use of -a/-o inside test on principle. Sadly, writing: > > if test ${PIPESTATUS[0]} -ne 0 || test $? -ne 0 > > has a flaw that $? is no longer what you want, at which point you would > have to introduce a temporary variable. But we're using bash, so you > can instead write this as: > > if test "${PIPESTATUS[@]}" != "0 0"; then
Hmm, with exactly this line here I get something like: ./scripts/archive-source.sh: line 36: test: too many arguments But with if test "${PIPESTATUS[0]} ${PIPESTATUS[1]}" != "0 0"; then it seems to work fine. What is the magic here? Fam