Do not require bash -- BSD sh(1) is perfectly capable of executing this script. While here, replace use of perl in removal of some characters from streams with the much lighter tr(1) invocations. Strip out carriage-returns (\r) characters from remote printer's responses too. Remove useless braces around variable-names. -mi --- foomatic-getpjloptions.in 2015-02-14 07:21:56.000000000 -0500 +++ foomatic-getpjloptions.in 2015-02-15 07:36:23.000000000 -0500 @@ -1,3 +1,3 @@ -#!@SH@ +#!/bin/sh # # Polls PJL options from local or network printers @@ -23,6 +23,5 @@ NC=@NC@ CAT=@CAT@ -PRINTF=@PRINTF@ -PERL=@PERL@ +PRINTF=printf # sh builtin usage(){ @@ -63,12 +62,13 @@ - # We have two arguments, do ethernet printer request + # We have two arguments, do network printer request # Poll the printer's answer and filter out the newpage characters + # as well as the carriage-returns (\r or, in octal, 015) - ${NC} -w 3 ${1} ${2} 2>/dev/null | ${PERL} -p -e "s/\014//" + $NC -w 3 $1 $2 2>/dev/null | tr -d "\015\014" else # We have one argument, do local printer request # Send commands to printer port - ${CAT} > ${1} + $CAT > $1 # Wait ten seconds for the printer to process the request sleep 10 # Poll the printer's answer and filter out the newpage and CR characters - ${CAT} < ${1} | ${PERL} -p -e "s/[\015\014]//" + exec tr -d "\015\014" < $1 fi