bzgrep uses !/bin/sh but then uses the bashism ${var//} so replace those with calls to sed so POSIX shells work http://bugs.gentoo.org/193365 --- ./bzgrep +++ ./bzgrep @@ -63,10 +63,9 @@ bzip2 -cdfq "$i" | $grep $opt "$pat" r=$? else - j=${i//\\/\\\\} - j=${j//|/\\|} - j=${j//&/\\&} - j=`printf "%s" "$j" | tr '\n' ' '` + # the backslashes here are doubled up as we have to escape each one for the + # shell and then escape each one for the sed expression + j=`printf "%s" "${i}" | sed -e 's:\\\\:\\\\\\\\:g' -e 's:[|]:\\\\|:g' -e 's:[&]:\\\\&:g' | tr '\n' ' '` bzip2 -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${j}:|" r=$? fi