And*_*eKR 15 environment-variables ash subshell
我知道我可以使用这样的环境变量运行命令:
FOO=bar mycommand
Run Code Online (Sandbox Code Playgroud)
我知道我可以在这样的子 shell 中运行命令:
(firstcommand && secondcommand)
Run Code Online (Sandbox Code Playgroud)
但是我可以以某种方式将这两者结合起来吗?
FOO=bar (firstcommand && secondcommand)
Run Code Online (Sandbox Code Playgroud)
给出:
Run Code Online (Sandbox Code Playgroud)sh: syntax error: unexpected "("
至少在busybox shell(灰烬)中。
编辑: Kusalananda 建议FOO=bar sh -c 'first && second'
这确实是一个解决方案。但是,我也对替代答案感兴趣,因为我喜欢 subshell 语法,因为它不需要摆弄转义引号。
Kus*_*nda 18
单程:
FOO=bar sh -c 'first && second'
Run Code Online (Sandbox Code Playgroud)
这FOO
为单个sh
命令设置环境变量。
设置多个环境变量:
FOO=bar BAZ=quux sh -c 'first && second'
Run Code Online (Sandbox Code Playgroud)
另一种方法是export
在子shell 中创建变量和它。这样做的export
子shell确保内部的外壳没有得到其环境变量:
( export FOO=bar; first && second )
Run Code Online (Sandbox Code Playgroud)
总结(现已删除)注释:export
创建环境变量(而不是 shell 变量)需要它。环境变量的问题是它们会被子进程继承。如果first
和second
是外部公用事业(或脚本)看看他们的环境,他们就不会看到FOO
不变量export
。
归档时间: |
|
查看次数: |
16155 次 |
最近记录: |