У меня есть структура кода ниже.Я получаю сообщение об ошибке второй команды обрезки, мне кажется, что ей не нравится динамическое назначение списка полей.пожалуйста совет.
** обновление: ** Ошибка («вырезано: недопустимый байт или список полей») указала на недопустимый набор символов или полей.По некоторым причинам, я предполагаю, что он не может оценить столбцы parsecols перед выполнением команды cut.
#!/bin/bash
parsecolumns="1,3,4,5"
parsedelimiter="|"
while i in line
do
filename="$(cut -d "," -f2 <<<"$(line)")"
cut -d $parsedelimiter -f$parsecolumns "$filename" > tempfile.txt #This is throwing an invalid delimiter or field list error
done <Filename.csv
Я смог решить ее, добавив команду в переменную и затем выполнив ее, как показано ниже,но мне интересно знать, почему мой исходный код не удался.
#!/bin/bash
parsecolumns="1,3,4,5"
parsedelimiter="|"
while i in line
do
filename="$(cut -d "," -f2 <<<"$(line)")"
specvar="cut -d '"
specvar="$specvar$parsedelimiter' -f"
specvar="$specvar$parsecolumns $filename > tempfile.txt"
eval "$specvar" #This helps resolve the above issue
done < somefilename.csv