The*_*One 6 linux shell-script arguments
我有一个包含日志文件列表的list.txt文件。
例如
server_log1
server_log2
........
server_log50
Run Code Online (Sandbox Code Playgroud)
我有另一个 shell 脚本用于下载这些日志。它是这样工作的
./script.sh serverlog1
Run Code Online (Sandbox Code Playgroud)
我想自动生成,这意味着它可以自动在list.txt中传入要执行的每个日志文件的名称。
那可能吗?我试过
#!/bin/bash
for i in `cat /home/ec2-user/list.txt` ; do
sh ./workaround.sh $i
done
Run Code Online (Sandbox Code Playgroud)
但它没有用
读取参数的最简单方法可以描述如下;
每个参数都由$IFS或 当前定义的引用和解析internal file separator。默认字符是空格。
例如,采取以下措施; # ./script.sh arg1 arg2
该示例中的参数列表是arg1 = $1并且arg2 = $2可以重写为arg1 arg2 = $@.
另一个注意事项是使用日志列表,它多久更改一次?我的假设是每天。为什么不使用目录输出作为迭代循环的数组?例如;
for i in $(ls /path/to/logs); do
./workaround.sh $i;
done
Run Code Online (Sandbox Code Playgroud)
或者更好的是,继续使用functionsin 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
Run Code Online (Sandbox Code Playgroud)
虽然这些只是提高您的 shell 脚本知识的建议,但我必须知道您是否遇到错误,并且还需要了解每个脚本代码和/或功能的详细信息。使用-x参数也有助于调试脚本。
如果您只是传输日志,您可能希望将所有脚本一起删除并使用rsync,rsyslog或者syslog因为它们都更适合所讨论的任务。
| 归档时间: |
|
| 查看次数: |
40696 次 |
| 最近记录: |