我想查看Android上存在的目录。
从https://stackoverflow.com/a/6364244/8586214,我明白了。所以我使用下面的adb
。
if [ adb shell ls ${test_dir} 2> /dev/null ] ;
then
echo "files exist"
else
echo "files do not exist"
fi
我是bash
脚本的新手。我知道adb shell ls
将返回所有文件名。但是2> /dev/null
的含义是什么?
我只关心files do not exist
条件。那么如何反转条件?
if [ ! adb shell ls ${test_dir} 2> /dev/null ] ;
then
echo "files exist"
else
echo "files do not exist"
fi
添加!
对我无效。
答案 0 :(得分:0)
在表达式中:
if [ adb shell ls ${test_dir} 2> /dev/null ]
重定向2> /dev/null
会重定向stderr
上的任何邮件(由abd shell ls ${test_dir}
导致的任何错误/dev/null
古怪地称为bit bucket
。实质上是位桶是一个无处可去的系统设备节点。因此,您可以将您喜欢的任何输出复制或重定向到/dev/null
,它就会消失(意味着它不会被复制到任何地方而且不再被重定向 - 它只是去进入比特桶 - 方便的黑洞)这具有抑制测试本身的任何输出的效果。
你问题的第二部分询问如何否定(反转)一个测试条款。简单的答案是在测试的前面加上'!'
。
如果您还有其他问题,请与我们联系。
在进一步讨论并整理出adb
是一个android工具之后,解决方案是在执行命令本身之后简单地检查返回,例如
$ adb shell ls ${test_dir} 2> /dev/null
然后用
测试返回if [ "$?" -ne '0' ]; then
# handle error
fi
如果您对此问题有进一步的疑问,请告诉我。