gpt4 book ai didi

linux - 为什么 '' var=value echo $var'' 不发出值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:00 26 4
gpt4 key购买 nike

<分区>

想要验证我对这些情况为何表现不同的理解:

我认为 #1 的发生是因为赋值和 echo 在 shell 中作为单个命令运行,并且当 echo 执行时 $SOME_VAR 未设置(shell 在执行前扩展所有变量)。

#1
$ unset SOME_VAR
$ SOME_VAR=abcdef echo $SOME_VAR # prints nothing

我认为 #2 的发生是因为赋值和 echo 在同一个 shell 中作为两个单独的命令运行,并且 $SOME_VAR 在 echo 执行时在 shell 中设置。

#2
$ unset SOME_VAR
$ SOME_VAR=abcdef ; echo $SOME_VAR
abcdef

我不明白为什么 #3 会发生

#3
$ unset SOME_VAR
$ SOME_VAR=abcdef ./test.sh # prints abcdef
abcdef

我认为 #4 的发生是因为 shell 脚本的分配和执行在父 shell 中作为两个不同的命令执行,而在 test.sh 中执行命令的子 shell 不继承 SOME_VAR(因为没有导出语句)。

#4
$ unset SOME_VAR
$ SOME_VAR=abcdef ; ./test.sh # prints nothing

test.sh 包含:

$ cat test.sh
#!/bin/bash

echo $SOME_VAR

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com