gpt4 book ai didi

linux - 如何将变量传递给 bash 脚本中的命令参数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:05 26 4
gpt4 key购买 nike

演示我的问题的示例 bash 脚本:

#!/bin/bash

function exclude
{
BACKUP_EXCLUDES="$BACKUP_EXCLUDES --exclude=\"$1\""
}

exclude "/proc"
exclude "/dev"
exclude "/mnt"
exclude "/media"
exclude "/lost+found"

echo $BACKUP_EXCLUDES

输出:

--exclude="/proc" --exclude="/dev" --exclude="/mnt" --exclude="/media" --exclude="/lost+found"

完美!但是当我尝试添加时:

rsync -ruvz $BACKUP_EXCLUDES / /some/backup/path

$BACKUP_EXCLUDES 被完全忽略,没有错误或警告...为什么?

最佳答案

你需要使用数组:

#!/usr/bin/env bash

BACKUP_EXCLUDES=()
function exclude
{
while
(( $# ))
do
BACKUP_EXCLUDES+=(--exclude="$1")
shift
done
}
exclude /proc /dev /mnt /media
exclude "/lost+found"

rsync -ruvz "${BACKUP_EXCLUDES[@]}" / /some/backup/path

bash 解释:请查看@janos 的回答

zsh 解释(如果是 Zsh):当您使用字符串变量时,就像您传递了 --exclude="\"/proc\"--exclude=\"/media\"..." - 因此它被视为带有空格的长路径 - 从未匹配过。

关于linux - 如何将变量传递给 bash 脚本中的命令参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17626700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com