gpt4 book ai didi

OSX 上的 python 和 echo -n

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:29 25 4
gpt4 key购买 nike

上下文:我跑了 this snippet在我的 Mac 上,注意到字符串 -n 散落在乱码输出中。答案是 Ubuntu 上的 sh 理解 -n 标志,而我的 Mac 上的 sh 不理解。

enter image description here

如您所见,python 向标准输出发送字符串 "-n abc\n" 而不是预期的 "abc"

是不是os.system调用无法分离-nabc? zsh(倒置的 % 是 zsh 指示 EOF 的方式)和 bash 都会发生,但如果我没记错的话,python 调用不应调用任何 shell(不是因为我读到任何内容所以,但根据我的常识)(编辑:事实证明我完全错了,系统运行一个子 shell)

看看 ruby​​ 是怎么做的:

enter image description here

还有一些测试:

enter image description here看起来脚本已发送到 sh,但此时 shell 的环境变量仍然是 zsh。说得通。我没有做任何清理环境的事情...也许 sh 不会自动设置 $SHELL

最佳答案

The Python docs状态:

[os.system] is implemented by calling the Standard C function system()

跟进 the man page for C's system :

system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed. During execution of the command, SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored.

重点是我的。

The man page for echo解释一下:

Some shells may provide a builtin echo command which is similar or identical to this utility. Most notably, the builtin echo in sh(1) does not accept the -n option. Consult the builtin(1) manual page.

你可以自己确认一下:

$ sh -c "echo -n hello"
-n hello
$ bash -c "echo -n hello"
hello

关于OSX 上的 python 和 echo -n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14867810/

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