如何拆分用制表符分隔的bash变量的部分?

时间:2012-04-14 18:13:39

标签: bash tabs quotes

我想在名为$ DequeuedItem的bash脚本变量中提取字段。字段以制表符分隔。

我尝试了以下句子:

DequeuedItemF1=$(echo $DequeuedItem | cut -f1)

但DequeuedItemF1获取了整个$ DequeuedItem,而且标签似乎成为常规空格。 echo命令是否在流到达cut命令之前对标签进行转换?

1 个答案:

答案 0 :(得分:1)

echo未加引号的变量时,制表符会更改为空格。双引号将保留选项卡:

DequeuedItemF1=$(echo "$DequeuedItem" | cut -f1)

如果DequeuedItem不包含内部空格,您也可以使用

DequeuedItemF1=$(echo $DequeuedItem | cut -d\  -f1)

但第一个选项更清晰,更强大。 (请注意,反斜杠后面有两个空格。反斜杠会转义第一个空格,它将成为cut的分隔符,第二个空格将-d选项与-f选项分开。令人困惑,更有理由使用其他选择!)