我试图在bashshell中从python的结果中获取一个变量。 下面是我的python代码:
print '** it is python testing **'
我做了一个空壳脚本。当我正常工作时,它显示出非常正确的结果。在
^{pr2}$结果:
** it is python testing **
但是,当我把它作为shell中的变量时,它显示了奇怪的结果。 脚本如下:
#!/bin/bash
#python pytest.py
PYTEST="$(python pytest.py)"
echo $PYTEST
结果是这样的:
ptest.sh pytest.py it is python testing ptest.sh pytest.py
我从其他复杂的代码中尝试过,但结果几乎相同。shell脚本中的变量总是显示目录中的一些文件。我不擅长shell脚本,但不明白为什么。 (我使用的是GNU bash,4.1.10版本)
有人能帮我吗? 提前感谢:)
如果你不引用扩展名,它们就是字符串拆分和全局扩展。”globexpansion“意味着像
*
这样的东西被改成文件名列表。在所以,引用:
…将以单个字符串的形式传递确切的输出。在
不引用:
^{pr2}$…将首先扩展:
…然后将
**
更改为文件名列表,然后然后调用echo
。在请注意,即使不使用globbing,字符串拆分也会产生意想不到的效果。假设您的Python程序是这样做的:
在这种情况下,您可能希望
echo $PYTEST
工作正常。。。但是,您将看到它删除了前导空格:为什么?因为字符串拆分将输入分解为单词,并将每个单词作为单独的参数传递给echo,echo将其参数与每个参数之间用一个空格连接起来。在
所以,正如下面的空白:
…在兼容POSIX的shell中,未加引号的扩展也是如此。(顺便说一句,zsh在这方面是否符合POSIX,并且隐式地将扩展视为引用了它们)。在
相关问题 更多 >
编程相关推荐