#author("2019-11-20T07:52:32+00:00","","")
#author("2022-09-23T10:40:34+09:00","","")
#topicpath


///////////////////////////////////////////////////////////////////////////////
* 目次 [#y5bfc779]
#contents();

///////////////////////////////////////////////////////////////////////////////
* xargs [#d0453ed2]
//=============================================================================
** option [#yf29a873]


///////////////////////////////////////////////////////////////////////////////
* 複数コマンドを実行する [#rd903c74]
- <command> の結果を、<command1> に渡して実行し、その後 <command2> に渡して実行する 
 $ <command> | xargs -I {} sh -c '<command1> {}; <command2> {}' 
-- sh は bash でも、同じオプションをサポートしているなら他の如何なる shell でも良い。
-- sh は bash でもOK。同じオプションをサポートしているなら他の如何なる shell でも良い。
-- オプション -c <string> は、文字列 <string> からコマンドを読み込む sh のオプション。このオプションは bash でもサポートされている。


///////////////////////////////////////////////////////////////////////////////
* パラレル実行 [#ece2198b]
- <command> の結果を引数とし、<command2> を <thread-num> 個のスレッドでパラレル実行する
 $ <command> | xargs -I {} -P <thread-num> <command2> {}

///////////////////////////////////////////////////////////////////////////////
* 標準入力から受け取った文字列を1個づつコマンドに渡す [#ba8d17ea]
//=============================================================================
** -n1 を使う [#y32ffec4]
- -I オプションを併用する必要がなければ、 -n1 を指定するだけで済む
//=============================================================================
** -n1 が使えない場合 [#u85f8000]
- -I オプションは、空白文字を区切り文字として認識せず、コマンドに全て渡してしまう。この場合、空白文字を改行に書き換えてから xargs に渡す。
 # 例: DB ファイルを sqlite3 コマンドに渡す。
 data_bases=( aaa.sqlite bbb.sqlite ccc.sqlite ddd.sqlite )
 echo ${data_bases[@]} | tr ' ' '\n' | xargs -I {} sh -c "sqlite3 {} vacuum; sqlite3 {} reindex";

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS