将多个剪切命令组合到一个剪切命令中的变量分配中

时间:2012-12-21 23:00:30

标签: bash shell

鉴于shell脚本中先前定义的$ LINE,我执行以下操作

var1=$(echo $LINE | cut -d, -f4)
var2=$(echo $LINE | cut -d, -f5)
var3=$(echo $LINE | cut -d, -f6)

我有什么方法可以将它组合成一个命令,其中切割仅运行一次? 像

这样的东西
var1,var2,var3=$(echo $LINE | cut -d, -f4,5,6)

2 个答案:

答案 0 :(得分:8)

内置read命令可以分配给多个变量:

IFS=, read _ _ _ var1 var2 var3 _ <<< "$LINE"

答案 1 :(得分:4)

是的,如果你对阵列没问题的话:

var= ( $(echo $LINE | cut -d, --output-delimiter=' ' -f4-6) )

请注意,将var设为0索引。

虽然将CSV $LINE转换为bash括号可理解的内容可能会更快更容易,然后只需执行var = ( $LINE )

编辑:如果你的$ LINE中有空格,上面会引起问题...如果是这样,你需要更加小心,并且AWK可能是添加引号的更好选择:

var= ( $( echo $LINE | awk IFS=, '{print "\"$4\" \"$5\" \"$6\""}' ) )