作者uranusjr (←这人是超级笨蛋)
看板Python
标题Re: [问题] python -c 接的程式码如何换行
时间Thu Jan 20 03:16:35 2011
※ 引述《Holocaust123 (奔跑的蜗牛)》之铭言:
: 我写了一只小程式foo.py , 想把它"嵌入".bashrc的某个function bar:
: bar()
: {
: output=`python -c "..."` # 这边用python比较好处理. 其实也可以改成:
: # output=`python foo.py`
: # 但, foo.py的内容大概也不会改变了,
: # 故想把程式码嵌进来, 就不需保留foo.py
:
: # 然後用bash script处理output
: # blah blah ...
: }
这样的话其实还好
首先你的 Python script 里面字串常数要用单引号, 不要用双引号
(用跳脱字元的字串一部份就照用)
不然要改比较多东西
例如假设你想嵌入一个 script 长下面这样:
for i in range(0, 9):
print i
print 'Second line'
print 'Finished'
那就这样:
output=`python -c "
for i in range(0, 9):
print i
print 'Second line'
print 'Finished'
"`
引号里面随你换行随你空白, shell 都会保留
不过用双引号的好处是可以用跳脱字元
输出其实也一样, 如果你直接 echo $output 那 shell 会把换行全部改成空白
我前面有说了这是 shell 的问题, 不是 python
其实这个问题是「要怎麽让 shell 保留输出的换行」才对, 和 python 无关
所以你在这边问也怪怪的
不过想想还是直接告诉你答案好了
请把 echo $output 改成 echo "$output"
用双引号括起来就一切解决...
其实这些都 google 就有了, 几乎都是 shell 的技巧而已
顺便附几个网址参考
http://goo.gl/l6ejz 这篇在讲 Bash Shell 中单双引号的差异
http://goo.gl/K2orU 这篇在讲如何保留 Bash Shell 字串变数中的换行
--
「我最想要的同伴嘛,首先是要笑口常开,其次是我们能永远不会发生误会。
如果这些都能办到的话,嗯,如果他是世界上第一流的桥手,也还不错。」
-- 班尼多‧加罗素,前义大利蓝队成员
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.81.146
1F:推 timTan:不熟sh但是又必须用shell 的人这样做就对啦~~ 01/20 13:00
2F:推 Holocaust123:谢谢你热心讲解 m(_ _)m 01/20 16:42