我有以下代码结构。我收到第二个cut命令的错误,我感觉它不喜欢字段列表的动态分配。请咨询。
** update:**错误(“cut:invalid byte or field list”)表示无效的字符或字段集。出于某种原因,我猜测它无法在执行cut命令之前评估parsecolumns。
#!/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