linux - 调用另一个脚本以在目录中的每个文件上执行的脚本

标签 linux bash scripting

有两个目录包含这些文件:

第一个/usr/local/nagios/etc/hosts

[root@localhost hosts]$  ll
total 12
-rw-rw-r-- 1 apache nagios 1236 Feb  7 10:10 10.80.12.53.cfg
-rw-rw-r-- 1 apache nagios 1064 Feb 27 22:47 10.80.12.62.cfg
-rw-rw-r-- 1 apache nagios 1063 Feb 22 12:02 localhost.cfg

还有第二个/usr/local/nagios/etc/services

[root@localhost services]$  ll
total 20
-rw-rw-r-- 1 apache nagios 2183 Feb 27 22:48 10.80.12.62.cfg
-rw-rw-r-- 1 apache nagios 1339 Feb 13 10:47 Check usage _etc.cfg
-rw-rw-r-- 1 apache nagios 7874 Feb 22 11:59 localhost.cfg

我有一个脚本,它遍历 Hosts 目录中的文件,并将该文件中的一些行粘贴到 Services 目录中的文件中。

脚本是这样运行的:

./nagios-contacts.sh/usr/local/nagios/etc/hosts/10.80.12.62.cfg/usr/local/nagios/etc/services/10.80.12.62.cfg

我怎样才能实现另一个脚本调用我的脚本并遍历 Hosts 目录中的每个文件,并为 Service 目录中具有相同名称的文件完成它的工作?

在我的脚本中,我从主机目录中的 10.80.12.62.cfg 中提取联系人并将它们附加到服务目录中具有相同名称的文件中。

最佳答案

不要使用 ls 输出作为 for 循环 的输入,而是使用内置的通配符。参见 why这不是一个好主意。

for f in /usr/local/nagios/etc/hosts/*.cfg
do
  basef=$(basename "$f")
  ./nagios-contacts.sh "$f" "/usr/local/nagios/etc/services/${basef}"
done

关于linux - 调用另一个脚本以在目录中的每个文件上执行的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49036675/

相关文章:

shell - 检查文件是否是 Linux 上的链接

javascript - 用于在网页中编写脚本的 Firefox 扩展

Bash:回显以 "-"开头的字符串

linux - 从 Linux 二进制文件返回值

linux - 基于时间戳的日志获取

linux - Bash 在后台运行函数

linux - 如何在 Linux 中卸载指定磁盘时运行脚本?

linux - Nginx 是否有单独的请求排队机制?

bash - 在命令行上使用粘贴或 PR 加入列不起作用

perl - 使用 bash/tail/perl/alias 轻松突出显示不同的字符串