我正在接受一堆脚本,并在 python 中为它们创建一个包装器。我没有创建给我的脚本。目前我正在使用 python 2.2,我使用的 shell 是 csh shell。
当我以以下方式运行脚本时:
>> setenv some_var '/some/path/'
>> <some more setenv>
>> ./script -flag >& log.txt < /dev/null &
它运行得非常好。
当我使用 bash 包装器调用我的 python 包装器时,就会出现问题。我的 bash 脚本(analysis.sh)如下:
#!/bin/bash
#environment variables
ENV1='/path/for/env1'
ENV2='/path/for/env2'
export ENV1
export ENV2
./run_analysis.py $@
exit
在我的python文件中,我基本上所做的就是执行
....
os.system(script_path + script_name + script_flag)
....
每当我在 csh shell 上以以下方式运行脚本时:
./analysis.sh -flag script_name >& log.txt < /dev/null &
该脚本突然给了我一堆损坏的管道错误(“grep:写入输出:损坏的管道”)。我知道该脚本确实使用了很多 grep。我只是不明白为什么在执行重定向时会弹出这些错误。在 python 2.2 中,只有 'os' 和 'commands' 模块存在。我被迫使用这些约束。
谢谢你。