如何在bash -c命令中插入变量

sca*_*der 3 unix linux bash

我可以做以下事情:

$ FOO="text"
$ echo $FOO
$ text
Run Code Online (Sandbox Code Playgroud)

但是如何将其包装在bash -c构造中?我尝试过但失败了:

$ FOO="text"
$ bash -c 'echo $FOO'
$ # return nothing
Run Code Online (Sandbox Code Playgroud)

我问这个的原因是因为我需要执行另外需要包装的第三方代码 bash -c

Luc*_*c M 5

尝试

$ export FOO="text"
$ bash -c 'echo $FOO'
Run Code Online (Sandbox Code Playgroud)

export命令用于将变量或函数导出到当前shell中运行的所有子进程的环境.

这是源头

"bash"命令启动子进程,其父进程是您当前的bash会话.

要在父进程中定义变量并在子进程中使用它,必须将其导出.

  • `FOO=text bash -c 'echo $FOO'` 也可以工作 - 在这种情况下,环境变量 `FOO` 仅在正在创建的进程 (`bash`) 的上下文中设置。 (2认同)