プレフィックス、サフィックス拡張なしで与えられたリストの値を取得するスクリプトを作成したいと思います。この部分は正常に動作します。
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
basename "${name#awstats.}" .conf
done
その後、変数をforループに渡す必要があります。その後、変数はコマンドに従って実行する必要があります。
/usr/bin/perl -config=$variable -update
上記のコマンドでは、変数を使用するために繰り返し試みる必要があります。この問題に対する解決策を知っている人はいますか?
答え1
元のループを使用して拡張してコマンドを使用しますperl
。
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
/usr/bin/perl -config="$(basename "${name#awstats.}" .conf)" -update
done
または提案されているように変数を使用してください。
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
config=$(basename "${name#awstats.}" .conf)
/usr/bin/perl -config="$config" -update
done
しかし、実際のPerlがあるようで、呼び出しはperl
少し混乱しています。スクリプトコマンドラインから欠落しています。私は実際の通貨が次のようになると思いました。
perl /some/path/somescript.pl -config="$config" -update
そうでなければ
/some/path/somescript.pl -config="$config" -update
「同時に」という言葉がどういう意味なのかも混乱しています。perl
同時に複数のコマンドを実行したいですか?
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
basename "${name#awstats.}" .conf
done |
xargs -I {} -P 4 /some/path/somescript.pl -config="{}" -update
これにより、Perlスクリプトインスタンスを最大4つまで同時に実行できます。