for-l oop в l oop синтаксическая ошибка: неожиданный конец файла - PullRequest
1 голос
/ 02 апреля 2020

Я пытаюсь запустить программу под названием aldy на нескольких. json файлах со списком элементов (A, B, C, D)

Я хочу использовать имя файла без расширения
как у bob в bob. json, у amy в amy. json

Желаемый вывод будет
bob.a.txt, bob.b .txt, ...
amy.a.txt, amy.b.txt, ...

Код, который у меня есть

#!/usr/bin/env bash

LIST=('A' 'B' 'C' 'D')

for file in *.json; do
     filename=${file%%.*}       
    for i in "${LIST}"; do
        outfile = $filename + ".${i}.txt"
        aldy -g ${i} -o $outfile $file
    done
done

Однако я получил сообщение об ошибке, и я не знаю, как это исправить.

синтаксическая ошибка: неожиданный конец файла

Любая помощь будет принята с благодарностью
Заранее спасибо.

1 Ответ

1 голос
/ 02 апреля 2020

Внесите следующие исправления:

  • for i in "${LIST[@]}"; do. Вот как вы получаете все элементы массива.

  • outfile=${filename}.${i}.txt.

    1. В присваиваниях не может быть пробелов вокруг =.
    2. Объединение переменных осуществляется путем их размещения рядом друг с другом. Вы можете использовать фигурные скобки (как в ${expandthis}butnotthis) для их разделения, но в вашем случае просто $filename.$i.txt (. служит разделителем).
  • aldy -g "$i" -o "$outfile" "$file". Укажите ваши переменные при их расширении. Если вы всегда делаете это, кавычки будут избыточными, или (в большинстве случаев) они предотвратят проблемы, вызванные разделением слов и смещением.

...