FC2ブログ

[xargs] bashスクリプト内ユーザー定義関数の実行

■ xargsから、bashスクリプト内ユーザー定義関数を直接的に実行することが出来ない為、
  export -f function_name
  にて、xargs以前に於いて、関数を一旦エクスポートする必要がある。
■ さらに、xargsからbashをコマンド引数付き (-c オプション) で呼び出す。
  bash -c "コマンド"
→ こうしなければ、xargs: func: No such file or directory というエラーで終了する。
→ さらに、引数内に " (ダブルクォート) を含む場合には、さらに \で (\"のように) エスケープする必要がある。

例)
#!/bin/bash
function func ()
{
  echo -e "filename = ${1}"
}
export -f func

find ./ -type f -name "*.txt" | xargs -t -I{} bash -c "func {}"

ちなみに、
→ -t ・・・ xargs での実行コマンド確認
→ -I{} ・・・ -Iオプション (引数代入文字変数指定) により、{}を引数代入文字変数として扱う。

参考文献:
■ xargsにbashのfunctionを渡す方法

関連記事
スポンサーサイト



コメント

非公開コメント