hdfs dfs -test -e返回值和shell脚本if语句判断问题

问题遇到的现象和发生背景

hadoop 中 $(hdfs dfs -test -e file: ///home/hadoop/text.txt) 是判断有没有text.txt这个文件,有的话输入echo $?就是0,没有的话就是1。
那么可不可以把$(hdfs dfs -test -e file:///home/hadoop/text.txt)理解为一个函数调用,并且这个函数会返回0或1

下面这段代码的作用是从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名
if $(hdfs dfs -test -e file:///home/hadoop/text.txt);
then $(hdfs dfs -copyToLocal text.txt ./text2.txt); 
else $(hdfs dfs -copyToLocal text.txt ./text.txt); 
fi

那么在这段shell命令中,如果有text.txt文件。那么$(hdfs dfs -test -e file:///home/hadoop/text.txt)的值应该是0,那么会执行else语句,即不重命名。但此刻理应执行then语句,要重命名。

但在实际运行中,该段代码是没有问题的。我是哪里理解错了呢?

题主,你究竟想问什么呀,你的问题描述的很矛盾,很让人摸不着头脑

img

程序代码即使正确也要视情况而定是否能运行,通常即使程序没问题,也不一定可以顺利执行,毕竟很容易让人忽略权限的问题,比如说shell脚本文件,要读取的目录文件,文件所在的目录等有没有可读可写可执行权限

理解错了
简单解释,shell中0表示真,非0表示假。
$(hdfs dfs -test -e file:///home/hadoop/text.txt)的值为0时,会执行then语句,而不是else语句
参考:https://blog.csdn.net/timo1160139211/article/details/74079553