Câu hỏi của bạn không rõ ràng. Điều hợp lý nhất để làm là không chạy hoàn cptoàn khi ký tự đại diện không khớp với bất kỳ tệp nào, thay vì chạy cpvà ẩn thông báo lỗi.
Để làm điều đó, nếu shell bị bash, hãy đặt nullglobtùy chọn sao cho mẫu ký tự đại diện mở rộng thành không có gì nếu nó không khớp với bất kỳ tệp nào. Sau đó kiểm tra xem mô hình có mở rộng thành bất cứ điều gì không và không gọi cptrong trường hợp đó.
#!/bin/bash
shopt -s nullglob
files=(/srv/ftp/201*/wha*/*.jj)
if [[ ${#files[@]} -ne 0 ]]; then
  cp "${files[@]}" ~
fi
Trong sh đơn giản, kiểm tra xem toàn cầu có được giữ nguyên không, chỉ vào một tệp không tồn tại.
set -- /srv/ftp/201*/wha*/*.jj
if ! [ -e "$1" ] && ! [ -L "$1" ]; then
  cp "$@" ~
fi