我们最近有一次关于bash的经历,即使我们找到了一个解决方案,它仍然在扭曲我的想法.bash如何&&根据返回码计算表达式?
执行此脚本,该脚本应该失败,因为myrandomcommand它不存在:
#!/bin/bash
set -e
echo "foo"
myrandomcommand
echo "bar"
Run Code Online (Sandbox Code Playgroud)
结果是预期的一个:
~ > bash foo.sh
foo
foo.sh: line 6: myrandomcommand: command not found
[exited with 127]
~ > echo $?
127
Run Code Online (Sandbox Code Playgroud)
但是使用&&表达式略微改变代码:
#!/bin/bash
set -e
echo "foo"
myrandomcommand && ls
echo "bar"
Run Code Online (Sandbox Code Playgroud)
该ls语句未执行(因为第一个语句失败并且不评估第二个语句),但脚本的行为非常不同:
~ > bash foo.sh
foo
foo.sh: line 6: myrandomcommand: command not found
bar # ('bar' is printed now)
~ > echo $?
0
Run Code Online (Sandbox Code Playgroud)
我们发现使用括号之间的表达式(myrandomcommand && ls)它按预期工作(如第一个例子),但我想知道原因.
我是一个蟒蛇初学者,我在我的第一天玩我自己的python脚本和django等项目.
我使用Ubuntu并将PYTHONPATH设置为
export PYTHONPATH=/usr/lib/python2.6:~/Projects/mypython
Run Code Online (Sandbox Code Playgroud)
当我遇到python解释器
import sys
print sys.path
Run Code Online (Sandbox Code Playgroud)
我可以看到
['','/ usr/bin','/ usr/local/lib/python2.6/dad-package/romanmode-0.12-cf2-py2.6.egg','/ usr/local/lib/python2.6 /dist-packages/rope-0.9.3-py2.6.egg','/usr/local/lib/python2.6/dist-packages/ropevim-0.3_rc-py2.6.egg','/ usr/lib/python2.6','/ home/jaume/Projects/mypython','/ usr/lib/python2.6/plat-linux2','/ usr/lib/python2.6/lib -tk','/ usr/lib/python2.6/lib-old','/ usr/lib/python2.6/lib-dynload','/ usr/local/lib/python2.6/did-package','/ usr/lib /python2.6/dist-packages','/ usr/lib/python2.6/did-package/PIL','/ usr/lib/python2.6/did-package/gst-0.10','/ usr/lib/pymodules/python2.6','/ usr/lib/python2.6/did-package/gtk-2.0','/ usr/lib/pymodules/python2.6/gtk-2.0','/ usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode','/ usr/lib/pymodules/python2.6 /IPython/Extensions',u'/ home/jaume/.ipython']
python如何加载所有非PYTHONPATH路径?有指数吗?此外,我将我的django安装在/ usr/lib/pymodules中,即使它不在sys.path列表中,它也会运行.
非常感谢.