2012-04-14 23 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