awkを使用してbashタスクリストのフィールドを取得するには?

awkを使用してbashタスクリストのフィールドを取得するには?

Bashのバックグラウンドタスクリストからフィールドを検索する関数を作成したいと思います。たとえば、特定のパラメータを取得します。

vimをバックグラウンドで送信し、「jobs」に次のリストが表示されるとします。

[1]+  Stopped                 vim ~/.bashrc

私の機能は次のとおりです

function jf {
    echo `jobs | awk 'NR==$1{print $$2}'`;
}

次に、次のように呼びます。

jf 1 4

最初の行の4番目の列「~/.bashrc」を返すことを期待していましたが、そうではありません。私は何が間違っていましたか?

ベストアンサー1

awkシェル変数から値を渡したいことを示す必要があります。関数定義では、次のようなトリックを実行する必要があります。

function jf {
    echo `jobs | awk -v LINENO=$1 -v COLUMNNO=$2 'NR==LINENO {print $COLUMNNO}'`
}

おすすめ記事