0

我是 shell 脚本的新手。我有一个 shell 脚本,它获取另一个文件。另一个文件只是一个具有名称值对的文件。我在这里有一个困惑。

test.dat
TEST_VARIABLE_PATH=/usr/project/workspace

脚本文件 (test_script.sh)

TEST_VARIABLE_PATH=
source test.dat
echo ${TEST_VARIABLE_PATH}

上面的 echo 语句打印出不同的值,这让我很困惑。在第 1 行,如果我让

TEST_VARIABLE_PATH=/somepath/

,即使我已经找到了已经设置了 TEST_VARIABLE_PATH 变量的 test.dat,echo 只打印

TEST_VARIABLE_PATH=/somepath/

获取文件的位置没有覆盖变量。

假设如果我将第 1 行设为

TEST_VARIABLE_PATH=\`dirname $0\`/../

,源命令覆盖和回显打印

TEST_VARIABLE_PATH=/usr/project/workspace

为什么这个来源的行为不同?请帮我理解。

4

1 回答 1

2

看来您实际上不是source该文件。

要正确执行此操作,请输入文件的完整路径,例如:

source '/full/path/to/file'
于 2012-11-21T08:18:48.260 回答