ls - ltr 错误,因为文件夹中没有任何内容
ls - ltr error because nothing in folder
我有一个脚本,在脚本中我是 运行 下面的命令。
ls -1tr ${ARCH1_DIR}/* | grep ${LOG_PREFIX} > $copied_binlog_set
如果文件夹为空,我会收到错误消息。
ls: cannot access /n01/mysqlarch1/*: No such file or directory
此时脚本停止处理。有没有办法让脚本在文件夹为空的情况下继续处理。
你可以试试:
ls -1tr ${ARCH1_DIR}/* 2>/dev/null | grep ${LOG_PREFIX} > $copied_binlog_set
当你写 2> file
时,它会将 stderr 重定向到 file
,但你可以使用 null
设备并抛出它获得的输入。你可以把它想象成你系统的黑洞。
*
由 shell 扩展,而不是 ls
命令。这意味着,如果没有文件,shell 不会扩展 *
,并且 ls
会尝试显示 named 文件的列表*
在目标目录中 -- 不存在,因此出现错误。
您可以重定向错误消息 (ls ... 2>/dev/null
),并通过 bash 变量捕获错误条件 PIPESTATUS
:
if [ ${PIPESTATUS[0]} != 0 ]
then
# whatever error handling your script needs at this point
echo "ls failed!"
fi
PIPESTATUS
允许检索管道链中任何命令的 return 值 ($?
)。 ($?
只会 return 链中 last 命令的值)。 PIPESTATUS
数组中的索引是管道链中命令的索引。
我有一个脚本,在脚本中我是 运行 下面的命令。
ls -1tr ${ARCH1_DIR}/* | grep ${LOG_PREFIX} > $copied_binlog_set
如果文件夹为空,我会收到错误消息。
ls: cannot access /n01/mysqlarch1/*: No such file or directory
此时脚本停止处理。有没有办法让脚本在文件夹为空的情况下继续处理。
你可以试试:
ls -1tr ${ARCH1_DIR}/* 2>/dev/null | grep ${LOG_PREFIX} > $copied_binlog_set
当你写 2> file
时,它会将 stderr 重定向到 file
,但你可以使用 null
设备并抛出它获得的输入。你可以把它想象成你系统的黑洞。
*
由 shell 扩展,而不是 ls
命令。这意味着,如果没有文件,shell 不会扩展 *
,并且 ls
会尝试显示 named 文件的列表*
在目标目录中 -- 不存在,因此出现错误。
您可以重定向错误消息 (ls ... 2>/dev/null
),并通过 bash 变量捕获错误条件 PIPESTATUS
:
if [ ${PIPESTATUS[0]} != 0 ]
then
# whatever error handling your script needs at this point
echo "ls failed!"
fi
PIPESTATUS
允许检索管道链中任何命令的 return 值 ($?
)。 ($?
只会 return 链中 last 命令的值)。 PIPESTATUS
数组中的索引是管道链中命令的索引。