我想使用python来处理我一直在使用bash做的事情。是否可以将-c开关用于长程序,例如带有两个语句的for循环?这将让我直接从命令行使用python,就像bash或php。
感谢。
编辑:不知道我是怎么错过它的,只需要做一个python -c'然后按回车做我想做的事情。我尝试了很多变化,一个使用了\但是没有用,所以我问了这个问题。 e.g。$python -c '
>print "x"
>for i in range(3):
> print "y" '
做我想做的事,虽然罗德的回答看起来也不错。
答案 0 :(得分:6)
如果您的底层shell是bash,没问题,因为如果打开的'
(引用)尚未关闭,您可以跨多行继续参数 - 例如:
$ python -c'for x in range(3):
> if x!=1:
> print x'
0
2
$
>
是bash的默认PS2
,“多行继续提示”,区别于$
,AKA PS1
,正常“开始输入命令“提示。
如果你不能使用这样的多行连续,那么多个嵌套的块语句(例如循环中的if
)可能会出现问题。
答案 1 :(得分:5)
您可以使用复合语句,使用分号分隔语句,例如
python -c "for x in range(0,3) : print x; print x
然后输出将是:
0
0
1
1
2
2
答案 2 :(得分:3)
在脚本中使用时,我认为让python从标准输入中读取脚本会更好,如下所示:
#!/bin/bash
python - arg1 arg2 <<END
import sys
print 'Arg:', sys.argv[1:]
END
这使用bash的HEREDOC语法。
答案 3 :(得分:1)
如果您从bash脚本运行,只需使用引号:
#!/bin/sh
python -c 'import os
for i in range(3):
for j in range(3):
print i*j
'
echo "done"
否则,如果使用cmd行,请使用;
分号分隔语句,或再次使用单引号括起来到下一行:
python -c 'import os
> for i in range(3):
> for j in range(3):
> print i*j
> '