首页 > 解决方案 > 使用 -c 调用时 Bash 传播变量

问题描述

我正在使用 ZSH。为什么最后一个命令不输出任何内容?

$ cat create_foo.sh 
foo=bar

$ source create_foo.sh && echo $foo
bar

$ unset foo

$ bash -c "source create_foo.sh && echo $foo"

从最后一个命令我没有得到任何输出。

标签: bash

解决方案


因为$foo被双引号中的空字符串替换。

您需要使用单引号或转义$符号:

$ bash -c 'source create_foo.sh && echo $foo'
bar

$ bash -c "source create_foo.sh && echo \$foo"
bar

推荐阅读