linux - 我可以找出谁调用了 zsh 脚本吗?

标签 linux shell unix zsh

假设有一个脚本master.sh,其名称为

./foo/bar/master.sh

并包含行

#!/bin/zsh
. ./x/y/slave.sh

是否有可能从slave.sh中找出正在执行采购的脚本是./foo/bar/master.sh

我不能在这里使用 $0,因为这会返回./x/y/slave.sh

我使用的是 zsh 5.0.6

最佳答案

实现此目的的一种方法是让子脚本将调用者的名称作为可选参数。因此这可以通过 `$1` 访问 例如:

#!/bin/zsh 
# master/leader
. ./x/y/slave.sh $0 # or hardcoded path
#!/bin/zsh 
# slave/worker
echo "Here is my master $1"

(您还可以使用主设备设置的环境变量执行另一个自定义协议(protocol))

(此解决方案也适用于 bash 和其他 shell)

关于linux - 我可以找出谁调用了 zsh 脚本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29342985/

相关文章:

linux - 测试 Bash 反向 Shell

c - 是否可以打印日志文件的特定部分?

linux - Unix 脚本/从变量替换文件中的字符串并移动到另一个目录

php - 接收通过 CURL 发送的二进制文件

database - 如何使用 bash shell 中的 psql 命令执行多个查询?

bash - 如何在unix shell脚本中查找文件中字符串的位置

linux - 如何在 unix 中使用 rm -rf 检索从命令行删除的文件?

linux - 在 Linux 上安装 pymc 时出现错误

c - 尝试在 Linux 上用 C 语言制作一个简单的数据包路由器。 select() 无限期闲置,我不知道为什么

linux - 在 AWK 中比较两个文件