gpt4 book ai didi

macos - 指向脚本的 Shebang(也有 shebang)被有效忽略

转载 作者:行者123 更新时间:2023-11-29 08:45:52 37 4
gpt4 key购买 nike

考虑以下代码:

#!/usr/bin/env python

import sys

print "Hello! I've got %r as input." % sys.stdin.read()

这是 /usr/local/bin/my_interpreter 中的 chmod +xed 脚本。还有这个:

#!/usr/local/bin/my_interpreter

This is intended to be passed "as is" to python script.

是试图利用它的 chmod +xed 脚本。如果我 回显某事 |/usr/local/bin/my_interpreter,它工作正常,但是一旦我尝试执行上面的脚本,它就失败了

/Users/modchan/test_interpreter/foo.bar: line 3: This: command not found

似乎 foo.bar 被静默重定向到 bash 而不是我的脚本。我究竟做错了什么?如何实现?

最佳答案

看起来 Mac OS X 要求解释器是二进制的,而不是另一个脚本。为了让它工作,将第二个脚本的解释器更改为

#!/usr/bin/env /usr/local/bin/my_interpreter

但这里还有第二个问题:第二个脚本的内容不会进入其解释器的stdin,但脚本路径名将作为命令行参数,即

/usr/bin/env /usr/local/bin/my_interpreter /Users/modchan/test_interpreter/foo.bar

您应该按名称 sys.argv[1] 而不是从 sys.stdin 读取文件。

关于macos - 指向脚本的 Shebang(也有 shebang)被有效忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9988125/

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