I have the following code:
ANSIBLE_WORK_DIR=${ANSIBLE_WORK_DIR:-$(pwd)/ansible}
ansible_work_dir() {
echo "${ANSIBLE_WORK_DIR}"
}
ansible_run() {
local cmd
ansible_dir=$(ansible_work_dir)
cmd="cd $ansible_dir && ansible-playbook --extra-vars env=${ENV}"
$cmd "${@}"
}
ansible_run playbooks/secrets/write.yml
我的问题是,我得到的结果如下所示:
cd /home/ubuntu/ansible '&&' ansible-playbook --extra-vars env=test playbooks/secrets/write.yml
我发现双“&”符在某些情况下会被转义,请问该怎么解决这个问题?
"$@"
作为单独参数传递时,eval
将有效地拆分它类似于$*
,然后重新解析(从头开始,因此将字符串中的$()
视为运行命令替换的指令)。考虑到正确性和安全风险,这是一个难以推荐的事情。 - Charles Duffy