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
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语句,要重命名。
但在实际运行中,该段代码是没有问题的。我是哪里理解错了呢?
题主,你究竟想问什么呀,你的问题描述的很矛盾,很让人摸不着头脑
程序代码即使正确也要视情况而定是否能运行,通常即使程序没问题,也不一定可以顺利执行,毕竟很容易让人忽略权限的问题,比如说shell脚本文件,要读取的目录文件,文件所在的目录等有没有可读可写可执行权限
是理解错了。
简单解释,shell中0表示真,非0表示假。
当$(hdfs dfs -test -e file:///home/hadoop/text.txt)
的值为0时,会执行then语句,而不是else语句
参考:https://blog.csdn.net/timo1160139211/article/details/74079553