Подстановка команд не выполняется, если я не повторю ее - PullRequest
0 голосов
/ 27 марта 2020

У меня есть метод, который скручивает, форматирует вывод и возвращает его в виде массива.

function hdfs_ls_curl() {
  ls_url=$1
  ls_result=$(curl -s --negotiate -u : ${ls_url})

  #gets the foldernames from the json returned. works fine.
  folder_names=$(echo $ls_result | grep -oP '(?<="pathSuffix":").+?(?=")') 

  #echo $folder_names  <--- MAGIC ECHO

  folder_array=( $folder_names )
  return $folder_array
}

Если я выполняю без эха, ничего не возвращается. Добавление эха позволяет ему вести себя правильно.

Подстановка команды не происходит без фактического оператора выполнения?

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Как указал GordonDavisson , удаление оператора return и просто печать его в виде массива сделали работу.

Функция вернет напечатанное значение, и я могу разобрать его в главном программа.

0 голосов
/ 27 марта 2020
> folder_names=$(echo $ls_result | grep -oP '(?<="pathSuffix":").+?(?=")') 

> #echo $folder_names  <--- MAGIC ECHO

folder_names="echo $ls_result | grep -oP \'\(?<=\"pathSuffix\":\"\).+?\(?=\"\)\'"
eval $folder_names

Это может сработать, но следите за этими побегами. Это сохраняет саму фактическую команду в переменной, а не ее вывод.

...