将本地 bash 文件导入到另一个 bash 文件中

kyo*_*kyo 8 unix linux macos bash shell

我有var.sh

\n\n
name="John"\nage="29"\n
Run Code Online (Sandbox Code Playgroud)\n\n

我也有main.sh

\n\n
eval "var.sh"\necho "My name is $name"\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我跑步时,我不断得到

\n\n
\xe2\x9a\xa1\xef\xb8\x8f  Desktop  bash main.sh \nmain.sh: line 1: var.sh: command not found\nMy name is \n
Run Code Online (Sandbox Code Playgroud)\n\n

将本地 bash 文件导入另一个 bash 文件的最佳做法是什么?

\n\n

有没有办法可以在 Mac OS X、Linux 和 Windows 上工作?

\n

cod*_*ter 10

eval不适用于将脚本导入另一个脚本。你需要source内置的:

source var.sh
Run Code Online (Sandbox Code Playgroud)

这是同义词:

. var.sh
Run Code Online (Sandbox Code Playgroud)

eval由于以下一个或两个原因引发错误:

  • var.sh 不可执行
  • var.sh 可执行,但当前目录不在 PATH 中

即使我们解决了这两个问题,eval也会生成一个 shell 来运行var.sh,这意味着一旦完成,里面设置的所有变量var.sh都会被忘记eval,这不是您想要的。


输出help source

source var.sh
Run Code Online (Sandbox Code Playgroud)