this-should-work: V=$$(expr " " : '\(.*[^\ ]\)') && printf '%s\n' "$$V" this-works: pat='\(.*[^\ ]\)' && \ V=$$(expr " " : "$$pat") && printf '%s\n' "$$V"