我的Linux服务器上有一大堆单安装WordPress站点。我想创建包含我的网站组的目录名的文本文件。
例如,我的所有网站都位于/var/www/vhosts
,我可能想要在一个文本文件中对一组100个网站进行分组,例如
site1
site2
site3
site4
如何编写只循环组文本文件中指定的目录并执行命令的脚本。我的目标是对一些WordPress插件进行符号链接,如果我可以创建组并在该组目录中执行命令,我不想手动逐个目录。
对于组文件中的每个站点,转到/wp-content/plugins
文件夹并执行指定的符号链接命令。
答案 0 :(得分:0)
根据您的目标,您可以使用find
和-exec
操作实现单线程。我倾向于把它当作一个Bash循环,因为它更容易添加额外的命令,而不是让一个长而笨重的命令完成所有操作,以及处理错误。
我不知道这是不是你想要的,但这是一个提案。
#!/bin/bash
# Receives site group file as argument1
# Receives symlink name as argument 2
# Further arguments will be passed to the command called
sites_dir="/var/www/vhosts"
commands_dir="wp-content/plugins"
if ! [[ -f $1 ]] ; then
echo "Site list not found : $1"
exit
fi
while IFS= read -r site
do
site_dir="$sites_dir/$site"
if ! [[ -d $site_dir ]] ; then
echo "Unknown site : $site"
continue
fi
command="$site_dir/$commands_dir/$2"
if ! [[ -x $command ]] ; then
echo "Missing or non-executable command : $command"
continue
fi
"$command" "${@:3}"
done <"$1"