Sal*_*ami 3 shell bash quoting
我想运行一个命令来获取脚本来处理一些环境。变量,而不是在我当前的 shell 中找到它们。
测试环境
export test=1
Run Code Online (Sandbox Code Playgroud)
这些命令都没有回显 env。多变的:
a) 这不应该工作吗?我不是只是在新 shell 中执行这些命令并返回输出吗?
$ bash -c "source test.env && echo $test"
Run Code Online (Sandbox Code Playgroud)
b) 在这里我执行 test.env 并尝试使用 exec 在同一进程中运行 echo $test。
$ bash -c "./test.env && exec echo $test"
Run Code Online (Sandbox Code Playgroud)
c) 最后我只是尝试了这个,因为它是一个可能的排列。但它将 test.env 和 echo 命令作为单独的进程执行。
$ bash -c "./test.env && echo $test"
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它在 env. 变量是在执行第二个命令之前获取的吗?
你必须$
在你的第一个命令中转义美元符号,否则bash
会在你的命令执行之前扩展它:
$ bash -c "source test.env && echo \$test"
Run Code Online (Sandbox Code Playgroud)
或者你应该使用单引号而不是双引号:
$ bash -c 'source test.env && echo $test'
Run Code Online (Sandbox Code Playgroud)