私リスト.txtファイルにはログファイルのリストが含まれています。
例えば
server_log1
server_log2
........
server_log50
これらのログをダウンロードする別のシェルスクリプトがあります。これがうまくいく方法です。
./script.sh serverlog1
自動で作りたいです。つまり、各ログファイルの名前を自動的に渡すことができます。リスト.txt処刑された。
それは可能ですか?頑張った
#!/bin/bash
for i in `cat /home/ec2-user/list.txt` ; do
sh ./workaround.sh $i
done
しかし成功はありません。
ベストアンサー1
パラメータを読み取る最も簡単な方法は次のとおりです。
各パラメータは、$IFS
現在定義されているORによって参照され検証されますinternal file separator
。デフォルトの文字は空白です。
たとえば、次のように見てください。# ./script.sh arg1 arg2
この例の引数のリストはarg1 = $1
andでありarg2 = $2
、これで書き換えることができますarg1 arg2 = $@
。
もう一つの注意はログリストの使用です。このリストはどのくらいの頻度で変更されますか?私の家は毎日です。繰り返しループの配列としてディレクトリ出力を使用しないのはなぜですか?例えば。
for i in $(ls /path/to/logs); do
./workaround.sh $i;
done
あるいは、より良い方法は、functions
混乱を取り除くためにbashで使い続けることです。
function process_file()
{
# transfer file code/command
}
function iterate_dir()
{
local -a dir=($(ls $1))
for file in ${dir[@]}; do
process_file $file
done
}
iterate_dir /path/to/log/for
これはシェルスクリプトの知識を向上させるための提案ですが、エラーが発生するかどうかを知る必要があり、各スクリプトのコードおよび/または機能に関する詳細も知っておく必要があります。パラメータを使用すると、-x
スクリプトのデバッグにも役立ちます。
ログのみを送信する場合は、スクリプトを完全に削除してくださいrsync
。rsyslog
syslog