Hi,
  I wanted to enable error code reporting for piped processes. This should be doable by "set 
-o pipeline on". The problem is it kills my $* array and defines $1="on".



$ bash -x /tmp/a.sh arg1 arg2 arg3
+ for f in $*
+ echo arg1
arg1
+ for f in $*
+ echo arg2
arg2
+ for f in $*
+ echo arg3
arg3
+ set -o pipefail on
+ for f in $*
+ echo on
on
$



I can work around by storing a $* copy before fiddling with set command.

$ cat /tmp/a.sh
#! /bin/sh


for f in $* ; do
 echo $f
done

mybackup=$*

set -o pipefail on

for f in ${mybackup} ; do
 echo $f
done
$


$ bash -x /tmp/a.sh arg1 arg2 arg3
+ for f in $*
+ echo arg1
arg1
+ for f in $*
+ echo arg2
arg2
+ for f in $*
+ echo arg3
arg3
+ mybackup='arg1 arg2 arg3'
+ set -o pipefail on
+ for f in ${mybackup}
+ echo arg1
arg1
+ for f in ${mybackup}
+ echo arg2
arg2
+ for f in ${mybackup}
+ echo arg3
arg3
$



I am on Gentoo Linux:

# emerge -pv app-shells/bash

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] app-shells/bash-4.4_p5-r1::gentoo  USE="net nls (readline) -afs 
-bashlogger -examples -mem-scramble -plugins" 0 KiB




Thank you for comments,
Martin

Reply via email to