我非常喜欢使用unix命令,但我找到了点,我会发现嵌入式python部分很有用.这是我的代码:
#!/bin/bash -
echo "hello!";
exec python <<END_OF_PYTHON
#!/usr/bin/env python
import sys
print ("xyzzy")
sys.exit(0)
END_OF_PYTHON
echo "goodbye!";
Run Code Online (Sandbox Code Playgroud)
但是,只打印"hello".
$ ./script.sh
hello!
xyzzy
Run Code Online (Sandbox Code Playgroud)
如何修改bash脚本以完全嵌入python?那么可以将python变量中的值传递给bash变量吗?非常感谢.
Bar*_*mar 10
不要用exec.这将使用您正在运行的程序替换shell进程,因此脚本的其余部分不会执行.
#!/bin/bash -
echo "hello!";
python <<END_OF_PYTHON
#!/usr/bin/env python
import sys
print ("xyzzy")
sys.exit(0)
END_OF_PYTHON
echo "goodbye!";
Run Code Online (Sandbox Code Playgroud)
Emm*_*met 10
在exec python ...行,你exec()荷兰国际集团在您的Python解释器PATH,所以python图像将取代bash图像,也绝对没有的希望echo "goodbye!"不断被执行.如果这就是你想要的,那很好,但除此之外,只要省略exec.
python代码中的shebang("#!")行完全没必要.当您尝试运行普通文件时,内核会看到"#!",运行它后面的任何内容(/usr/bin/env python),并将文件的其余部分提供给已运行的任何文件的标准输入.这是一个用于调用解释器的通用工具.由于您自己调用python解释器,而不是要求内核执行它,因此既不需要也不需要它.
这sys.exit(0)也是不必要的,因为END_OF_PYTHON无论如何,当Python解释器到达其输入(at )的末尾时,它将自然地退出.这意味着这import sys也是不必要的.
总之,以下是我要编写的内容,以实现您希望实现的目标:
#!/bin/bash
echo "hello!";
python <<END_OF_PYTHON
print ("xyzzy")
END_OF_PYTHON
echo "goodbye!";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3573 次 |
| 最近记录: |