Sua pergunta não está clara. A coisa mais sensata a fazer seria não executar cp
quando o curinga não corresponder a nenhum arquivo, em vez de executar cp
e ocultar a mensagem de erro.
Para fazer isso, se o shell for bash, defina o nullglob
option para que o padrão de caractere curinga seja expandido para nada se não corresponder a nenhum arquivo. Em seguida, verifique se o padrão foi expandido para qualquer coisa e não chame cp
nesse caso.
#!/bin/bash
shopt -s nullglob
files=(/srv/ftp/201*/wha*/*.jj)
if [[ ${#files[@]} -ne 0 ]]; then
cp "${files[@]}" ~
fi
Em sh simples, teste se a glob foi deixada inalterada, apontando para um arquivo inexistente.
set -- /srv/ftp/201*/wha*/*.jj
if ! [ -e "$1" ] && ! [ -L "$1" ]; then
cp "$@" ~
fi