我想在名为$ DequeuedItem的bash脚本变量中提取字段。字段以制表符分隔。
我尝试了以下句子:
DequeuedItemF1=$(echo $DequeuedItem | cut -f1)
但DequeuedItemF1获取了整个$ DequeuedItem,而且标签似乎成为常规空格。 echo命令是否在流到达cut命令之前对标签进行转换?
答案 0 :(得分:1)
当echo
未加引号的变量时,制表符会更改为空格。双引号将保留选项卡:
DequeuedItemF1=$(echo "$DequeuedItem" | cut -f1)
如果DequeuedItem
不包含内部空格,您也可以使用
DequeuedItemF1=$(echo $DequeuedItem | cut -d\ -f1)
但第一个选项更清晰,更强大。 (请注意,反斜杠后面有两个空格。反斜杠会转义第一个空格,它将成为cut
的分隔符,第二个空格将-d
选项与-f
选项分开。令人困惑,更有理由使用其他选择!)