2012-04-14 61 views
0

我想提取名为$ DequeuedItem的bash脚本变量中的字段。字段以制表符分隔。如何拆分用制表符分隔的bash变量的部分?

我试着用下面的句子:

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

但DequeuedItemF1获得了整个$ DequeuedItem,它似乎是标签成为经常的空间。在流到达剪切命令之前,echo命令是否对标签进行了转换?

回答

1

当您的echo未加引号的变量时,选项卡将更改为空格。双引号将保留标签:

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

如果DequeuedItem不包含内部空间,你也可以使用

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

,但第一个选项都更清晰,更稳健。 (请注意,反斜杠后有两个空格,反斜杠转义出第一个空格,第一个空格成为cut的分隔符,第二个空格将-d选项与-f选项分隔开来。令人困惑的是,使用其他选项的所有更多理由!)

+1

...或'-d“”'/'-d“”'这是一点点混乱。 – 2012-04-14 18:23:52

+0

@pst是的,这样更具可读性,但仍然存在相同的健壮性问题。这是关于linux的好事之一:你几乎从来没有用完替代品。 :-) – 2012-04-14 18:28:48

+0

谢谢,就是这样! – Pep 2012-04-14 18:33:46