O método mais fácil de ler argumentos pode ser descrito da seguinte forma:
Cada argumento é referenciado e analisado pelo $IFS
ou atualmente definido internal file separator
. O caractere padrão é um espaço.
Por exemplo, tome o seguinte; # ./script.sh arg1 arg2
A lista de argumentos nesse exemplo é arg1 = $1
e arg2 = $2
, que pode ser reescrito como arg1 arg2 = $@
.
Outra nota é o uso de uma lista de registros, com que freqüência isso muda? Minha suposição é diária. Por que não usar a saída do diretório como o array de seu loop iterativo? Por exemplo:
for i in $(ls /path/to/logs); do
./workaround.sh $i;
done
Ou melhor ainda, passe a usar functions
no bash para eliminar a desordem.
função process_file () { # transfer code code / command }
função iterate_dir () { local -a dir = ($ (ls $ 1)) para o arquivo em $ {dir [@]}; Faz arquivo process_file $ feito }
iterate_dir / path / to / log / para '
Embora sejam apenas sugestões para melhorar o seu conhecimento de script de shell, preciso saber se há um erro que você está recebendo e também preciso saber os detalhes de cada código de script e / ou funcionalidade. Fazer o uso do argumento -x
ajuda a depurar scripts também.
Se você estiver simplesmente transferindo logs, talvez queira eliminar todos os scripts e usar rsync
, rsyslog
ou syslog
, pois todos são muito mais adequados para a tarefa em questão.