gpt4 book ai didi

Bash 脚本中 $0 的意外值

转载 作者:行者123 更新时间:2023-12-05 09:11:55 24 4
gpt4 key购买 nike

我有两个文件 vars.shmain.sh,内容为:

$ cat vars.sh
#!/bin/bash
fname="$0" # should $0 equal 'vars.sh'?

$ cat main.sh
#!/bin/bash
echo $0
. vars.sh
echo $fname

当我运行 main.sh 时,我得到:

$ ./main.sh
./main.sh
./main.sh

我的问题是为什么 vars.sh 中的 $0 返回 main.sh?我阅读了关于 $0 的 man bash 部分,但这并没有太大帮助。

最佳答案

获取另一个脚本涉及在当前 shell 中执行获取的命令。在当前 shell 中,$0 指的是 main.sh。您可以将采购视为类似于“包含”或“复制粘贴”。

但是,确实存在一种在 bash 中获取源文件名的方法。您可以使用 BASH_SOURCE 变量。

如果将 vars.sh 更改为:

#!/bin/bash
fname=${BASH_SOURCE[0]}

然后您将按预期获得源文件的名称。

关于Bash 脚本中 $0 的意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59386985/

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