无法重定向命令错误

无法重定向命令错误

我正在尝试在目录中搜索文件并相应地打印合适的消息。但是我没有得到所需的结果。例如。当文件存在于目录中时,结果符合预期但是,当不存在文件时,输出显示如下

ls: cannot access 'Voucher_Sales_Order_Report_202305*.unl': No such file or directory

里面的其他

虽然 Else 块是正确的,但我想删除上面 ls 的错误消息。我已经尝试过 /dev/null 它仍然不起作用。请帮忙

#/bin/bash

cd /applogs/NFS_SO_PROCESSING
d=`date -d '1 month ago' '+%Y%m'`
filename=`ls Voucher_Sales_Order_Report_$d*.unl`

if [ "$filename" ]
then
        echo "Inside IF"
else
        echo "Inside Else"
fi

答案1

应该:

#! /bin/bash -
shopt -s nullglob

cd /applogs/NFS_SO_PROCESSING || exit

info() {
  [ "$#" -eq 0 ] || printf '%s\n' "$@"
}

die() {
  info >&2 "$@"
  exit 1
}

d=$(date -d '1 month ago' '+%Y%m')
filename=(
  Voucher_Sales_Order_Report_"$d"*.unl
)
 
case ${#filename[@]} in
  (1) info 'OK, one matching file';;
  (0) die 'ERROR, no matching file';;
  (*) die 'ERROR, more than one matching file';;
esac

do-what-you-like with "$filename", same as "${filename[0]}" in bash

相关内容