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}'`
}