Перебор содержимого каталога с помощью скрипта - PullRequest
0 голосов
/ 21 мая 2019

У меня есть следующий скрипт, который должен перебирать содержимое каталога 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.

...