xargs replstr が期待どおりに動作しません。 2番目の引数として{}を許可しません。

xargs replstr が期待どおりに動作しません。 2番目の引数として{}を許可しません。

私が実行したいコマンドは次のとおりです。

mdb-tables davidoff.mdb | xargs -I {} mdb-export davidoff.mdb {} > {}.csv

mdb-exportは2つのパラメータを使用し、2番目のパラメータをパイプしようとします。その後、それぞれをファイルに書きたいです。

これはうまくいきません。削除しても引き続き> {}.csvエラーが発生します。

Error: Table {} does not exist in this database.

シェルはzsh

パート1の出力例:

% mdb-tables davidoff.mdb
anatomypiclink bugs bugseverity bugtype classifications Diseases docaccess docaccesstype docassignments docclassifications docdetails docnotes docpicturelink docqa docs doctype keypicturelink keywords links logons mediatype navdoclinks navimagelinks navstructures organs Paste Errors pictureclassifications pictures picturetype qub3_queries_que qub3_relations_rel qub3_settings_set quotes references sequencelinks sequences subDocType videos dictionarytable doclinks docstatus media docs_ExportErrors

テストケースとして私はこれを働かせることができました: printf "1\n2\n3\n" | xargs -I touch {}

なぜreplstrを2番目の引数として使用できないのですか?

ベストアンサー1

一部のシステムの一部のバージョンでは、パラメータxargsに255バイトの制限があります。この場合は、マニュアルページのパラメータセクションでこれについて言及する必要があります-I。引数がこの制限より大きい場合、プレースホルダは変わりません。mdb-tablesテーブル名のリストを500バイトの1行に出力します。

Quasímodoが述べたように、-d "\n"パラメータを使用してテーブル名を別々の行に分割することもできます-1

おすすめ記事