Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 比较hdfs文件和unix文件,获取错误_Bash - Fatal编程技术网

Bash 比较hdfs文件和unix文件,获取错误

Bash 比较hdfs文件和unix文件,获取错误,bash,Bash,对于此代码,我在意外标记()附近遇到了语法错误。它运行良好,直到我将diff行放入其中: shopt -s nullglob for f in *.csv hdfs dfs -test -e $target_dir/$f if [ $? = 0 ] then echo File exists. check if its same hadoop v unix if diff <(hdfs dfs -cat $target_dir/$f) <(cat $f)

对于此代码,我在意外标记()附近遇到了
语法错误。它运行良好,直到我将
diff
行放入其中:

shopt -s nullglob
for f in *.csv
  hdfs dfs -test -e $target_dir/$f
  if [ $? = 0 ]
  then
    echo File exists. check if its same hadoop v unix
    if diff <(hdfs dfs -cat $target_dir/$f) <(cat $f)
    then
      echo Files are the same
    fi
  fi
done
shopt-s nullglob
对于*.csv中的f
hdfs dfs-测试-e$target_dir/$f
如果[$?=0]
然后
echo文件存在。请检查其是否与hadoop v unix相同
如果*.csv中f的diff
,则执行
hdfs dfs-测试-e“$target_dir/$f”
rc=$?
如果[[“$rc”==0]];则
echo“文件存在。检查其是否与hadoop v unix相同”

如果diff可以帮助您解决类似于此方面的问题,请注意:对两个文件使用md5哈希之类的东西将比
diff
快得多。您可以通过执行
bash-n
来验证bash脚本的语法,谢谢Vivek。是的,我使用了fi,当然完成了。我复制了您上面发布的代码,但发生了相同的错误。Shellcheck thinks一切正常。@Angus你确定你的shell是“bash”吗?是的,它的bash,shebang在顶部。好的,所以当我使用
$test.sh
运行它时,我在意外标记附近得到了
语法错误(
但是当我使用
$./test.sh
运行它时效果很好。为什么会这样呢?谢谢!Do
echo“$PATH”
。您何时测试.sh,如果它正常工作,那么bash将从“$PATH”变量的某个位置提取tesh.sh。我猜您的$PATH中还有一个文件“test.sh”
for f in *.csv; do
  hdfs dfs -test -e "$target_dir/$f"
  rc=$?
  if [[ "$rc" == 0 ]]; then
    echo "File exists. check if its same hadoop v unix"
    if diff <(hdfs dfs -cat "$target_dir/$f") <(cat "$f") ; then
      echo "Files are the same"
    fi
  fi
done