【发布时间】:2017-01-08 16:48:36
【问题描述】:
我现在正在编写一个 bash 脚本,其中包含一个检查目录是否包含内容的语句。
现在,代码是
if [ "$(ls -A $APPLICATIONS)" ]; then
do something
else
do something else
fi
但是,当文件夹确实为空时,我希望 ls 的错误被抑制。通常,它会说“没有这样的文件或目录”,但我想将其重定向到 /dev/null。
我试过了
if [ "$(ls -A $APPLICATIONS &> /dev/null)" ]; then
这确实像我想要的那样将所有内容重定向到 /dev/null,但它也会导致找不到目录(本质上导致退出代码 1)。
这样做的正确方法是什么?
【问题讨论】:
-
空目录不应导致错误。如果目录本身不存在,您只会收到该错误,如果它是空的则不会。
-
除非
$APPLICATIONS包含通配符,例如/path/to/directory/*而不仅仅是目录名。 -
@Barmar 问题的另一个方面是我的目录本应位于的位置有它自己的问题。 掌心
标签: bash if-statement redirect scripting exit-code