我有以下脚本,该脚本应该遍历HDFS目录的内容
#!/bin/bash
PATHS=$(java MyJava)
DELIM='|'
HDFSPATH=${PATHS}${DELIM}
while [[ ${HDFSPATH} ]]; do
PATHARR=( "${HDFSPATH%%"DELIM"*}" );
HDFSPATH=${HDFSPATH#*"$DELIM"};
done
SOURCEPATH=${PATHARR[0]}
for FILENAME in `hdfs dfs -ls ${SOURCEPATH} | awk '{print $NF}' | grep .txt$ | tr '\n' ' '`; do
echo ${FILENAME};
done
我按如下方式运行
sh myscript.sh
.java文件是
public class MyJava {
public static void main(String[] args) {
System.out.println("/a/b/c/" + "|" + "/d/e/f");
}
}
我希望这是
/a/b/c/file1.txt
/a/b/c/file2.txt
但是我得到的是
/a/b/c/file1.txt /a/b/c/file2.txt
换行符被替换为空格,循环仅运行一次。但是,当我直接通过外壳运行for循环时,我得到了预期的结果。有人可以帮我吗?
该脚本在Linux计算机上运行。