我想使用该cut
命令提取 csv 文件的某些列。然而,我不想将我的标准硬编码,而是想从 bash 变量中获取它们。
如果没有变量,我的命令将如下所示:
cut -d';' -f 1-8,20,22 "$input_file" > ANFR_reduced.csv
但是,当我将标准存储-f 1-8,20,22
在 bash 变量中时,我的cut
命令无法正确执行(错误字段从 1 开始编号)
criteria_col="-f 1-8,20,22"
cut -d';' "$criteria_col" "$input_file" > ANFR_reduced.csv
请问有什么想法为什么不起作用吗?
如果启用调试模式 (
set -xv
),您将看到以下内容bash
:请注意,它
-f 1-8,20,22
被视为单个字符串'-f 1-8,20,22'
,这又会导致错误。一种简单的修复方法是将变量
-f
从变量移至命令行,例如:如果您需要将其
-f
作为标准的一部分,那么我建议使用 F.Hauri 的评论/建议使用数组。