On Sat, Feb 05, 2011 at 10:26:20AM +1000, Allan McRae wrote: > Adding the "|| true" to the subshell prevents bash-3.2 setting off the > error_trap but requires changing the if statement. > > Signed-off-by: Allan McRae <[email protected]> > --- > scripts/makepkg.sh.in | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in > index 13415fb..001178a 100644 > --- a/scripts/makepkg.sh.in > +++ b/scripts/makepkg.sh.in > @@ -507,8 +507,8 @@ download_sources() { > > local netfile > for netfile in "${source[@]}"; do > - local file > - if file=$(get_filepath "$netfile"); then > + local file=$(get_filepath "$netfile" || true) > + if [[ -n "$file" ]]; then > msg2 "$(gettext "Found %s")" "${file##*/}" > ln -sf "$file" "$srcdir/" > continue > -- > 1.7.4 > >
I don't agree with this. The local keyword will actually mask the return value of the command substitution and you will always return without error. It's therefore sufficient to do: local file=$(get_filepath "$netfile") if [[ -n $file ]]; then ... This also applies to any variable defined via the 'declare' builtin. dave
