2017-04-21 17 views
0

変数内で一緒に使用するsed &の出力をキャプチャできません。以下はスクリプトのコードスニペットです:変数にsed出力を割り当てることができません

max=$(sed -n '1,${/$i/p;q;}' $file | cut -d "," -f2) 

maxの値を印刷すると空白が表示されます。しかし、以下のように端末で実行すると、コード行は正常に動作しています。

sed -n '1,${/$i/p;q;}' $file | cut -d "," -f2 

なぜ割り当てが失敗したのか分かりません。誰も私をここで助けてくれませんか?

よろしく、コメントに記載されている(とOPのために働いていた)のよう Sayantan

+0

ここで成果を上げようとしていることがわかりません。明らかに '1、$'から2行でいくつかのsed処理をしているので、パイプは2つの値を渡す必要があります。つまり、値を格納する配列が必要です。 – sjsam

+0

@sjamはい2つの値を与えていますが、 2列目の値だけを取得します。私は$ iを文字列で置き換えました。正確なファイル名を持つ$ファイルはのような行を持ち、端末で直接実行しました。それはとして出力しています。しかし、スクリプト内では変数maxに割り当てられていません。 –

+0

さて、 'sed'の' 1、$ {/ $ i/p; q;} 'が論理的に間違っている 'q'に気付きました。 sedはいずれの場合も最初の行の後に終了し、最後の行には行かない。さらに、 '-n'オプションを使用して出力を抑止しているわけではありません。つまり、最初の行が2回出力されます。ここで何を達成しようとしていますか? – sjsam

答えて

0

:単一引用符で

$ iの変数ではなく、エンド・オブ・ラインは、文字が続くI行末の後(不可能)になります。

関連する問題