如何使用 for 循环(或不使用)在 `borg create` 命令中使用键和值
How to use key and value in a `borg create` command using for loop(or not)
我在服务器上有一些站点,我只想备份它们的 webroot,为每个站点创建一个新的存储库。使用 bash 4 我可以使用字典。
declare -A sites=(["site1"]="/var/www/webroot1"
["site2"]="/var/www/webroot2"
["site3"]="/var/www/webroot3"
)
博格命令是:
borg create --verbose --progress --list --stats --show-rc --compression lz4 $REPOSITORY::{$key}-{now:%Y-%m-%d} $value
如何创建一个将在此命令中同时使用键和值的 for 循环?
像下面这样的东西,而不是做 echo
,使用命令中的键和值并一个一个地备份所有站点。
for i in "${!projects[@]}";
do
echo "key : $i"
echo "value: ${sites[$i]}"
done
我不只想回显键和值。我想在 一个命令 中使用它们。
希望我已经很好地理解了您的问题。在python中可以编写如下代码
sites=[
("site1", "/var/www/webroot1"),
("site2", "/var/www/webroot2"),
("site3", "/var/www/webroot3")
]
##create a dictionary called arr{} with key: site and value:webroot
arr = {}
for k,v in sites:
if k in arr:
arr[k].append(v)
else:
arr[k] = v
print(arr)
输出将是:
{'site1': '/var/www/webroot1', 'site2': '/var/www/webroot2', 'site3': '/var/www/webroot3'}
您现在可以随意操作上面的字典 arr{}
。
要执行命令 borg create --verbose --progress --list --stats --show-rc --compression lz4 $REPOSITORY::{$key}-{now:%Y-%m-%d} $value
,那么您需要像这样遍历字典 arr{}
:
for k,v in arr.items():
borg create --verbose --progress --list --stats --show-rc --compression lz4 $REPOSITORY::{k}-{now:%Y-%m-%d} v
我在 borg create command
.
中将 {site}
替换为 {k}
,将 /var/www/webroot
替换为 v
希望这就是你想要的:
declare -A sites=(["site1"]="/var/www/webroot1"
["site2"]="/var/www/webroot2"
["site3"]="/var/www/webroot3"
)
for key in "${!sites[@]}"; do
borg create --verbose --progress --list --stats --show-rc --compression lz4 "$REPOSITORY"::{"$key"}-{now:%Y-%m-%d} "${sites[$key]}"
done
它假定变量 REPOSITORY
也被定义为某个值。
我在服务器上有一些站点,我只想备份它们的 webroot,为每个站点创建一个新的存储库。使用 bash 4 我可以使用字典。
declare -A sites=(["site1"]="/var/www/webroot1"
["site2"]="/var/www/webroot2"
["site3"]="/var/www/webroot3"
)
博格命令是:
borg create --verbose --progress --list --stats --show-rc --compression lz4 $REPOSITORY::{$key}-{now:%Y-%m-%d} $value
如何创建一个将在此命令中同时使用键和值的 for 循环?
像下面这样的东西,而不是做 echo
,使用命令中的键和值并一个一个地备份所有站点。
for i in "${!projects[@]}";
do
echo "key : $i"
echo "value: ${sites[$i]}"
done
我不只想回显键和值。我想在 一个命令 中使用它们。
希望我已经很好地理解了您的问题。在python中可以编写如下代码
sites=[
("site1", "/var/www/webroot1"),
("site2", "/var/www/webroot2"),
("site3", "/var/www/webroot3")
]
##create a dictionary called arr{} with key: site and value:webroot
arr = {}
for k,v in sites:
if k in arr:
arr[k].append(v)
else:
arr[k] = v
print(arr)
输出将是:
{'site1': '/var/www/webroot1', 'site2': '/var/www/webroot2', 'site3': '/var/www/webroot3'}
您现在可以随意操作上面的字典 arr{}
。
要执行命令 borg create --verbose --progress --list --stats --show-rc --compression lz4 $REPOSITORY::{$key}-{now:%Y-%m-%d} $value
,那么您需要像这样遍历字典 arr{}
:
for k,v in arr.items():
borg create --verbose --progress --list --stats --show-rc --compression lz4 $REPOSITORY::{k}-{now:%Y-%m-%d} v
我在 borg create command
.
{site}
替换为 {k}
,将 /var/www/webroot
替换为 v
希望这就是你想要的:
declare -A sites=(["site1"]="/var/www/webroot1"
["site2"]="/var/www/webroot2"
["site3"]="/var/www/webroot3"
)
for key in "${!sites[@]}"; do
borg create --verbose --progress --list --stats --show-rc --compression lz4 "$REPOSITORY"::{"$key"}-{now:%Y-%m-%d} "${sites[$key]}"
done
它假定变量 REPOSITORY
也被定义为某个值。