Можно вырезать команду, используя динамический список полей - PullRequest
0 голосов
/ 13 июня 2018

У меня есть структура кода ниже.Я получаю сообщение об ошибке второй команды обрезки, мне кажется, что ей не нравится динамическое назначение списка полей.пожалуйста совет.

** обновление: ** Ошибка («вырезано: недопустимый байт или список полей») указала на недопустимый набор символов или полей.По некоторым причинам, я предполагаю, что он не может оценить столбцы 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
...