0

$DequeuedItem という名前の bash スクリプト変数のフィールドを抽出したいと考えています。フィールドはタブ区切りです。

次の文で試しました。

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

しかし、DequeuedItemF1 は $DequeuedItem 全体を取得し、タブが通常のスペースになるようです。ストリームがカット コマンドに到達する前に、エコー コマンドはタブの変換を行っていますか?

4

1 に答える 1

1

引用符で囲まれていない変数の場合echo、タブはスペースに変更されます。二重引用符はタブを保持します:

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

DequeuedItemに内部スペースが含まれていない場合は、次を使用することもできます

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

ただし、最初のオプションはより明確で堅牢です。(バックスラッシュの後に 2 つのスペースがあることに注意してください。バックスラッシュは最初のスペースをエスケープし、これが の区切り文字にcutなり、2 番目のスペースは-dオプションとオプションを分離し-fます。紛らわしく、他の選択肢を使用するより多くの理由があります!)

于 2012-04-14T18:18:54.573 に答える