両方のファイルのパラメータをコマンドに渡すには?

両方のファイルのパラメータをコマンドに渡すには?

あるサーバーから別のサーバーに50台のプリンター設定をコピーしようとしています。注文する:

lpadmin -p printer_name -v printer_ip -Eそしてより多くのパラメータ。

あるテキストファイルにプリンタ名を入れ、もう一方のテキストファイルにプリンタIPを入れました。

Printername.txtには、別々の行にプリンタ名が含まれています。

Printerip.txtには、別の行にある同じプリンタのIPが含まれています。

これら2つのファイルのプリンタ名とプリンタIPを上記のコマンドのパラメータとして渡したいと思います。

catファイルでFor iを使用して1つのパラメータで実行する方法を知っていますが、2つのファイルでは実行できません。

ベストアンサー1

貼り付けを使用して、各ファイルから1行をインポートできます。

paste Printername.txt Printerip.txt

次に、awk次を使用してオプションパラメータを挿入します。

paste Printername.txt Printerip.txt | awk '{print "-p", $1, "-v", $2, "-E ..."}'

最後に、xargsこれをコマンドの引数として使用します。

paste Printername.txt Printerip.txt | awk '{print "-p", $1, "-v", $2, "-E ..."}' | 
  xargs -L1 lpadmin

-L1xargsコマンドを実行するたびに1行の入力を使用します。一部の分割が行われるため、-pプリンタ名などが別の引数として渡されます。これは、プリンタ名にスペースやその他の特殊文字が含まれていない場合に最も効果的です。

または、withを使用してsh入力xargsをパラメータとして配置することもできます。

paste -d '\n' Printername.txt Printerip.txt | xargs -d '\n' -n2 sh -c 'lpadmin -p "$1" -v "$2" -E ...' _

おすすめ記事