jq: 1 ошибка компиляции jq: ошибка: расписание / 0 не определено в, строка 1: .Christchurch.bus-schedule.from ["День недели"] | =.+ ["1646"] - PullRequest
0 голосов
/ 09 мая 2019

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

Я смотрел на управление версиями, возможные изменения синтаксиса в файле .sh, который emap.sh

Этоэто .sh файл

#!/bin/bash
object='{}'

find 'public/data' -type f -name '*.csv' | while read -r filename;
do
    filename=$(echo "$filename" | sed 's/public\/data\///' | sed 's/ /\//')
    city=$(echo "$filename" | cut -d'/' -f1)
    medium=$(echo "$filename" | cut -d'/' -f2)
    direction=$(echo "$filename" | cut -d'/' -f3)
    date=$(echo "$filename" | cut -d'/' -f4)
    time=$(echo "$filename" | cut -d'/' -f5| head -c-5)
    object=$(echo $object | jq -c ".$city.$medium.$direction[\"$date\"] |= . + [\"$time\"]")
    echo $object > public/available.json
done

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

1 Ответ

1 голос
/ 09 мая 2019

Переменные оболочки должны быть переданы в jq более надежным способом, например, по следующим линиям:


jq -c --arg city "$city" \
      --arg medium "$medium" \
      --arg direction "$direction" \
      --arg date "$date" \
      --arg time "$time" \
   '.[$city][$medium][$direction][$date] += [$time]'

Как указывает @OguzIsmail, вам, вероятно, было бы лучше избежать всей этой путаницыделать все с помощью find и jq.

...